[개발생각] LMAX Disruptor에 대해서
한때 코인이 엄청나게 인기가 있을때, 거래소를 만들고 싶어서 많은 공부를 했던 기억이 있다.거래소를 만들기 위해서는 여러 기술등이 필요했고, 고민들이 필요했다. 거래소에서 거래 기능은 ms를 다투는 초저지연으로 기능이 구현되어야 한다.거래라고 하면, 비트코인 매도가 올라오면, 해당 매도 수량에 대해서 동시에 많은 구매자가 매수를 시도하게 되고,해당 기록은 디비에 남겨지고, 그 매수량에 따라 각각의 구매자의 수량을 더해줘야하고,매도자의 수량을 빼줘야하는 동시성이 아주 중요한 기능을 ms단위로 수행을 해야한다. 이기능을 단순히 db로 구현하게 되면,몇명만 동시에 거래를 수행해도, db가 맛이 가게되거나, 정합성이 맞지 않게 된다.여기서 해결책은 db에 로우락을 거는 방법인데,이러면, 동시처리 성능이 현저하게..
[개발생각] Kotlin JDSL사용을 해야 했어....
이번 프로젝트에서jpa를 적극적으로 사용하되, 배치등에서는 mybatis를 사용하고, 어드민에서는 querydsl을 사용하는것으로 결정을 했었다. api프로젝트에서는 jpa를 적극적으로 사용하여, 쿼리의 중복이나 엔티티의 관리를 철저히하는 방향으로 갔고,배치등에서는 배치잡의 특성상 조인과 조건등이 복잡한 쿼리가 다수존재하고,해당 조건들을 jpa로 풀어낼수가 없는 경우도 많아서, mybatis를 사용하기로 했다. 하지만, 지금 생각하면, 아쉬운 결정을 한것같다. api쪽은 jpa를 통해서 엔티티를 관리하는 방법을 사용했기에, 몇몇 통계데이터를 jpql쿼리로 사용하는것 말고는 거의 대부분을 Repository인터페이스를 통해 구현을 했기에, 일관성을 유지하고 중복을 제거하는 효과를 보았다. 하지만 배치쪽..
[개발생각] 미션 보상 기능을 코틀린 DSL 사용하면..
미션이 여러개 있고, 그 미션의 조건들에 따라 보상을 다양하게 주어야하는 보상시스템을 만들어야 한다고 했을때, 가장 먼저 떠오르는방법은 전략패턴을 이용하여 각각의 미션 전략을 만들고, 그것들을 관리하고 동작하도록 하는 방법일것이다. 여기서 중요한 부분은 그 전략들을 선언할때, 인터페이스를 이용하여 구현을 하게 되는데,이 인터페이스가 때로는, 코드를 읽거나 흐름을 파악하기가 어렵게 숨어서 동작하게 되는 케이스가 있다. 로직이 복잡하여,공통 로직을 수행하고, 여러 다양한 추가 로직을 수행하는것들이 더덕더덕 붙을때가 이런 경우중에 하나이다. 이렇게 좀더 흐름을 쉽게 이해하고 한눈에 보이게 하려면, DSL을 구현하여 사용하면 좀더 깔끔하게 코드를 구성할수있다. DSL의미가 도메인 특화 언어(문법)이기때문에,도..
[개발생각] FSM을 사용하자.
미션 보상 서비스를 급하게 하나 만들어야 하는데... 하.. 만들지말까..정말..(오픈준비를 하는 시점에, 기획 해달라고 예전부터 요청한걸 묵혔다가, 기획 정리도 안된 예전 기획서 대로 그냥 만들어달라고하여, 꼭지가 돈다) 하지만, 아무리 그래도, 개발은 해야할듯하여, (개발자 직업을 택한 내가 죄인이다...ㅠ)주말에 어떻게 구현을 할것인가를 생각을 해봤는데..미션 보상 조건이 상당히 복잡하다.. 하지만 좀더 정리를 해보니, 여러조건이 순서대로 일어나고, 해당 순서대로 조건이 부합될때 보상을 해주는 흐름인것으로 파악을 했고, 순서가 있는 여러조건의 흐름에 맞는 설계는 FSM을 이용한 설계가 적합하지 않을까 생각이 들어서, 시스템 설계를 좀 해봤다. 우선, 기본적인 유저의 행동에 대한 이벤트는 이미 구현..
[개발생각] 프로와 아마추어의 차이
초등학교 2학년 겨울방학, 옆짝꿍이 얇은 문제집을 쉬는시간에 풀고있는데, 영어가 쏼라쏼라 있어서 호기심에 들여다 봤다.뭔지 도통 몰라서 짝꿍한테 물어보니,컴퓨터 프로그래밍 gw-basic이라는거란다.코드를 작성하면, 별표(*)가 사각형으로 출력하고, 삼각형으로 출력되고, 별모양도 출력된단다. 그 모양을 출력하려면 코드를 작성해야하는데 그게 프로그래밍이라는거란다.. 충격이였다..... 이상한 알수없는 문자를 입력하면, 저렇게 출력이 가능하다니, 멋있어보였다.(초등학교때 A,B,C,D 알파벳 처음봄...ㅋㅋㅋ)뭔가 존재하지 않는 존재를 창조하는 신이 된것같은, 창조자처럼 그당시에는 느껴졌다. "엄청 멋있다.." 그날 바로 엄마에게, 컴퓨터학원에 보내달라고, 내 생애 처음이자 마지막으로 이야기를 했다.(컴퓨터..