일상 협업 이야기: 참조 아키텍처 써먹기 편

출근 후 받아보는 메일링 리스트에서 Kafka Streams ... 라는 제목에 낚입니다. Kafka, Streams 모두 제가 꽂히는 단어죠. 암튼 별 생각없이 쓱 읽는데, 영문인데다 수학공식까지 나오기 시작하자 정독은 포기합니다. 다만, 아래 그림에 시선을 고정합니다. 그리고, 아래 그림을 이해하는데 필요한 내용만 골라서 읽습니다. 써먹고 싶다는 강렬한 충동일 일어서죠.
presentation
출처: https://dzone.com/articles/kafka-streams-catching-data-in-the-act-1

빠르게 응용(모방)해보기

마침 우리에게 상태머신(상태 관리 기능) 구현이 필요한 상황입니다. 직접 구현을 하지는 않지만, 제품을 책임지는 입장에서는 팀의 가속화를 위해서 의미있는 일은 뭐든 해야 합니다. 이걸 어떻게 써먹을까 생각해봅니다. 그림을 키노트[1]로 불러 와서 녹색으로 우리 상황에서는 어떻게 대응시켜 써먹을지 아이디어를 그려봅니다. 대강의 의도를 설명하면 다음과 같습니다.
  • Event Sources로 흔히 쓰는 용어를 차용합니다. 실제 의미는 주문(Order) 관련 이벤트를 생성하는 프로그램을 의미합니다. 우리는 JSON 형태로 데이터를 운반하는 메시지를 유형화 하여 이벤트로 부르기로 합니다. 현재는 주문 상태 머신(Order State Machine)을 구현하는 상황이기 때문에 지금 다루는 이벤트는 모두 주문 관련 이벤트죠.
  • Order-based Vertex는 기사에 쓰인 단어인 vertex를 인용했습니다. 기사에 쓰인 의미를 고려한 것이 아니라 단어가 마음에 들어 썼습니다. 엄밀한 용어정의는 아닌데 대강 그래프 이론에 등장하는 vertex를 상태 처리 단위로 쓰기로 합니다.
  • Clearance Vertex를 추가합니다. 기사에서는 Vertex Processor와 Triangle Processor로 구분했습니다. 기사 내용과 무관하게 우리는 여러 파티션을 사용하여 병렬처리를 할 수 있는 주문의 상태 변화 처리를 구현하는 단위를 Order(-based) Vertex 라고 부르고, 주문을 종료로 이끄는 마감 성격의 상태 변화를 Clearance Vertex 표 구분하기로 합니다.
  • 마지막으로 장기 저장소(long-term storage)로 장부를 묘사할 데이터베이스는 MySQL을, 각종 순위를 묘사할 저장소는 현재 쓰고 있는 검색엔진인 Lucene을 계속 쓰기로 합니다.

presentation
레퍼런스 각색하기

옆자리 동료[2] 의견을 들어보기

마침 옆자리에 CTO가 앉아 있으니 제 생각을 이야기합니다. CTO님이 많은 이야기를 해주십니다. 일부는 소화가 되고, 일부는 이해하기 어렵죠. 정신을 가다듬고 다시 들으면서, 내가 수용할 수 있는 부분을 묘사해봅니다. 아래 그림으로 정리할 수 있었습니다. CTO님이 SaaS 형태인 우리 서비스 운영에 필요한 모니터링 요건을 제시하며 3계층을 언급한 것에 이름을 대강 붙여서 표현합니다. 그리고, 개발자에게 추상적인 수준에서 유형 구분이 필요한 요소 각 계층 안에 나눠그려 이름을 붙여봅니다. 아직은 그저 아이디어일 뿐이지만, 개발자가 시작할 수 있는 자극제(Input) 역할 정도면 충분합니다[3].
presentation
3계층과 계층별 구성요소 지정

동료들과 공유하기

이왕 그린 김에 동료들을 불러서 번개(?) 미팅을 합니다. 제 아이디어와 동기를 설명하니 두 사람이 일단 코드를 작성해보겠다고 나섭니다. 무슨 일이 벌어질지 흥미로워집니다. 여기까지 일을 행하는데 대략 1시간 ~ 1시간 반의 시간을 씁니다. 그리고, 느낌이 생생할 때 여기 기록을 해둡니다. 다음 이야기를 이어가기 위한 용도기도 하고, 독자 여러분도 넓은 의미의 동료일 수도 있기 때문이죠.

내가 던진 파문이 무엇이 되어 돌아올까?

어떤 의도를 가진 일이 아닙니다. 즉흥적으로 흥미롭다 생각해서 정리하고 공유한 짧은 생각과 그 시간이 동료들에게 어떤 영향을 미치고, 그들의 행동의 결과를 받아볼 즈음 글을 써서 공유합니다. 그 후속 결과가 또 나에게, 동료들 각자에게, 또 우리에게 어떤 영향을 줄지 기대되는데... 의미있는 경과가 나타나면 또 글로 써서 공유하기로 하고 이번 글은 여기서 마칩니다.

주석

[1] 맥에서 쓰는 발표 자료 작성 프로그램. 윈도우의 파워포인트와 유사
[2] 최초에는 '전문가'라고 썼다가 '동료'로 고칩니다. 이번에는 마침 옆에 전문가가 앉아 있었던 것이지, 전문가를 제가 찾아간 것은 아니기 때문에 '동료'라고 상황에 맞게 고쳐씁니다. 물론, 전문가였지만 말이죠. ^^
[3]  아기발걸음 원칙을 따릅니다.