[아이디어] 테슬라 데이터 수집 - 테슬라가 빌런이다.
테슬라의 차량 데이터를 API를 통해, 수집을 해야하는데, 테슬라 이놈들 API로 장사를 하네...ㅠ 오픈API는 일반적으로 사용요금이 저렴한 편인데...테슬라 1만대 기준 한달사용하는 API비용이 최악의 경우 4억이 넘어간다.(물론, 사용/용도에 따라 다르겠지만, 우리가 만드는 서비스는 대략 계산해보니 저정도 발생하더라... 갑부도 아니고..이거뭐..쩝)물론, 최악을 기준으로 계산한것이긴 하지만 , 후덜덜하다. 테슬라에서 API를 통해,내 차량의 데이터(배터리 충전량, 주행가능거리등)를 가져오려면, 기본적으로 테슬라차량이 깨어있어야 한다.깨어있다는 이야기는,주차를 한 상태면 배터리 사용을 줄이기위해 시스템도 동면에 들어가는데,이경우는 차량의 데이터를 API를 통해서 가져올수없게 된다.이경우 테슬라A..
[개발생각] REDIS vs RDB 안전성에 대해서..
참, 막연한 두려움인것일까?, 고정관념인 것일까? REDIS는 뭔가 불안전하고, RDB는 안전하다고 느끼는 것.. 서비스를 만들때, RDB 대신, 성능을 위해서 REDIS에 값을 넣고 조회하는 방법을 많이 사용한다.그런데, 이때 꼭 불안한 마음이 들긴한다.. REDIS 죽으면 어떻하지??RDB에도 저장을 해둬야하나? write-back이라고 하는데,캐시에 먼저 저장해두고, 적절하게 후에 rdb등에 백업해서 저장해두는 방법도 많이 쓴다. 엄밀히 말하면, RDB가 REDIS보다 더 안전한것인가?라는 의문이 들긴한다.RDB도 복제타이밍이나, 커밋/설정등에 따라 유실이 될수가 있다.완벽하게 완전무결한 솔류션은 아니다.다만 복제디비를 유지할수있어서, 문제가 있을때,바로 슬레이브 디비가 구동될수있다 정도랄까?!..
[개발생각] 온라인 사용자에게만 통계가 필요한 경우
가입유저가 많은 서비스에서 홈화면에 접속한 유저에 대한 어떤 데이터를 보여줘야하는 경우에 어떻게 시스템을 설계할수 있을까? 가장 쉬운방법은,배치프로세스를 만들고, 해당 배치에서 가입유저대상으로 데이터를 일정주기로 수집하여, 미리 데이터를 데이터베이스에 만들어둔다.그리고, 사용하는 시점에는 데이터베이스의 단순 조회를 통해 서비스되도록 설계하는 방법이다. 하지만, 만약 수집데이터를 수집하기위해 외부API를 호출해야하고, 해당 외부API의 호출량이 정해져있는 (유료,TPS) API라면,이야기가 좀 달라진다.(*자체 데이터를 통해 통계데이터를 만드는경우라면, 이야기는 좀틀리다, 빅데이터 플랫폼(스파크,하둡등)을 통해 얼마든지 다른 해결책이 있다) 홈화면에 접속한 유저에게만 보여줘야하는 데이터를 위해,가입..
[아이디어] 복잡한 로직은 GraalVM JavaScript엔진을..
전기요금을 계산하는 프로그램을 개발해야 했다. 전기요금 계산이 이거 이래도 되나 할정도로 복잡하고, 지역, 계절, 년도등의 변수가 많고, 계산 또한 변수가 너무 많았다.이런경우 이런 계산 로직을 코드로 작성을 하는것보다, 변수에 빠르게 적응을 하기 위해서,다이나믹한 기법을 사용하는게 더 좋을것 같다는 생각을 했다.rule엔진을 사용하는게 좋아보이지만 (drools등), 단순 계산을 위해 rule엔진을 사용하는건 오버엔지니어링이라고 판단을 했다.그리고, rule엔진이 사실, 사용하는게 상당히 번잡하고 복잡하다...먼가 간단하면서, 다이나믹하게 계산식을 적용하고, 반영되게 하는 방법을 원했다. 고민중에 예전에 mocksal이라고 개인 mocking 서비스를 만들때 (https://tech.super100.a..
[개발생각] 캐시 스탬피드
캐시 스탬피드를 실무에서 겪었던때는 다음 티스토리팀에 다닐때, 처음으로 겪어봤다. 그때는 이게 왜이러지 하고 그냥 넘겼었는데...지금 생각하니 참 무지했다. ㅠ 캐시를 사용할때, 캐시가 있으면, 캐시된값을 전달하고, 캐시가 없으면, 디비등에서 조회하여 캐시를 만들고, 해당값을 전달하는 방식으로 코딩을 자주 한다. 여기서 중요한점은, 동시성이 중요한 시스템에서는 (대량 트래픽 서비스), 캐시가 없는 시점에 디비를 조회하는 행위를 여러 요청이 동시에 할수가 있다는 점이다. 캐시가 없는 시점에 캐시를 만드는 경우, 락을 걸지않는 이상, 캐시를 만드는 행위를 동시에 여러 요청들이 수행하게 된다. 여기서 중복 조회 이슈가 발생하게 된다. 엄밀히 보면, 하나의 요청만 디비를 조회하고, 캐시를 만들면 되는 건데,..
[개발생각] 내가 생각하는 개발자란?
초등학교 2학년 겨울쯤에 컴퓨터 프로그래머가 되기로 마음먹었고, 그 마음이 현재까지 한번도 변하지 않았었다.. 내가 가장 잘할수있다고 생각되는 부분이 컴퓨터 프로그래머, 개발자라고 생각했고, 그 생각은 아직도 변하지 않았다.현재도 딱히 다른걸 잘할수있다고도 생각이 들지 않는다.(사진,기타,게임 뭐 깔짝깔짝하긴했는데... 흥미나 실력이 잘 늘지를 않더라 ㅋㅋ) 하지만, 개발에 대해서의 마음가짐은 누구보다도 진심이라고 생각한다. 내가 만드는 서비스에 대해서,한번도 대충 만든다거나, 이정도면 됐다라고 생각하지 않았다.계속 발전시키고, 수정하기 위해서 고민했던것은 분명하다. 예전에 면접을 본곳에서 면접자가 이런이야기를 한적이 있다."엄청 예전일인데, 그당시 개발한 내용을 상당히 디테일하게 설명을 하시는군요,..