지난해 다양한 소프트웨어 아키텍팅 강의를 진행해 왔습니다. 아키텍처 설계 및 평가 기법, 그리고 부하테스트/ 성능 최적화에 대한 강의가 주를 이루었습니다. 아키텍처 설계 프로세스는 말그대로 진행은 하면 되지만, 결국 많은 설계 기법을 알지 못하면 좋은 설계를 하지 못하는 상황이 빈번하게 발생했습니다. 2022년에 다음과 같은 강좌 들을 진행했습니다. 강의를 하다보면서, 아직 많은 교재들이 디자인패턴에 지식이 머물러있고, 몇몇 […]

지난 22년 7월 어니컴은 과기부, 경찰청, 정보통신산업진흥원이 함께 진행하는 ‘AI 모델 개발 및 실증 사업’을 수주하였습니다. 그래서 사업을 진행하면서 얻은 AI 모델 검증 및 데이터 검증 노하우와 환경 구축을 위한 일련의 과정을 공유드리고자 합니다. 이번 시간은 AI 모델 성능 및 데이터 품질 검증 노하우 시리즈 두 번째 시간으로  AI 모델 검증 환경 구축을 위한 과정 […]

일전에 약속을 드렸던 것처럼 Fault Tolerance 패턴 자료를 공유드립니다. 고 가용성이라는 것이 서버쪽에서는 동일한 요소를 두개 주는 이중화라는 기법으로 확보가 가능하지만, 자동차나 프론트엔드, 모바일쪽에서는 이중화 전략을 쓰기에는 한계가 많습니다. 소프트웨어 아키텍처 설계 과정을 준비하면서 만든 자료입니다. 저 역시 많은 선배님들의 지식을 가지고 성장했던 것처럼, 이 자료가 많은 동료와 후배분 들에게 미약하나마 도움이 되었으며 합니다. pdf로 […]

제가 패턴학회에 이사회 맴버로 있고, 저에게 가르침과 영향을 많이 주신 두분이 계십니다. 한 분은 유연하면서도, 지혜로운 삶을 사는 자세를 가르쳐 주신 Linda Rising 이시고, 또 한분은 AT&T에서 네트워크 스위치 개발을 시작으로, 오랫동안 Fault Tolerant 패턴을 정리해 주신 Robert S. Hanmer 님입니다. Bob Hanmer 님은 요즘 외부 활동을 잠시 쉬고 계시지만 이 분의 여러가지 노력들을 아래와 […]

소프트웨어 아키텍트의 길은 멀고 험난합니다. 그 와중에 조금이나마 아키텍트를 꿈꾸거나, 진입하시는 분들을 위한 과정을 진행하고 있습니다. 이미 다양한 대기업에서 강의를 했습니다. 수업의 커리큘럼은 다음과 같습니다. 관심있는 기업 교육자 담당자 분들은 연락을 주시면 됩니다. 시간당 25만원이 아니면 강의를 하지 않습니다. 시간당 20만원의 요청이 제법있는데, 안 하기로 했습니다. 다만 수도권이 아닌 지방이라면 지식 공유를 위해 훨씬 저렴하게 […]

저자 : Robert Armstrong / Netflix 파트너 엔지니어 Netflix는 수백만 개의 셋톱 박스, 스마트 TV, 스트리밍 스틱 및 기타 가전 기기에서 사용 중입니다. Netflix의 DRE(Device Reliability Engineering/디바이스 신뢰성 엔지니어링) 팀은 엄격한 초기 인증 과정을 거쳐 (위에서 언급한) 디바이스들이 수없이 많은 업데이트와 서비스 개선을 통해 고품질의 경험을 지속적으로 제공하도록 보장할 책임이 있습니다. 현재까지 전 세계에는 1,600개가 […]

AI 테스팅, 안면인식, 과기부, 법무부, 어니컴, NIPA

CPO는 제품의 향후 마일스톤을 결정하고, 어떠한 가치및 기능들을 전달할지 결정하는  역할이다.  개발자에게는 제품/상품이라는 개념이 다소 생소할수 있겠지만, 결국 우리가 만드는 SW들은 고객들에게 하나의 상품이다.  고객의 입장에서 매력적인 / 또 실제 팔릴수 있는 상품을 만들수 있게 제품 전반에 지휘권을 가지고 있는 자다.    

트위터는 왜 두번이나 모니터링 시스템을 직접 개발 하였을까요?   Monitorama 에서 발표한 Building Twitter Next-Gen Alerting System과  여러 컨퍼러스에서 발표한 내용을 정리해서 공유해 드리고자 합니다.

Twitter 모니터링 초창기 시스템 아키텍처

observability2

첫 모니터링 솔루션은 위와 같이 아키텍처를 수립하였습니다. (현재 오픈소스 솔루션과 유사하죠)     1.0 시스템은 다음과 같은 컴포넌트로 구성되어 있습니다.  (트위터의 모니터링 시스템이 오픈소스로 공개되지 않아서, 전적으로 발표자료에 의존해 설명이 구체적이지 않습니다. )

  • Agent  – 데이터를 수집하는 Agent로 시스템 성능에 필요한 여러 지표를 수집.
  • Collector & Storage API – 수집부에서 데이터를  모아  Storage API 를 통해 Time Series Database( Manhattan으로 추정)에 저장하고, 그정보를 Cassandra에 저장.
  • Monitoring – Query 엔진으로 데이터를 긁어와 여러 지표를 모니터링.
  • Dashboard –  Alert 과 Dashboard 를 쉽게 구성할수 있는 Config, DSL을 제공.
  • Ad Hoc Queries – 상황에 따라 적합한 쿼리를 던질수 있음.

트위터는 왜 모니터링 2.0 시스템을 만들어야 했나?

하지만 트위터의 급격한 성장으로 인해, 위 아키텍처로는 더 이상 모니터링을 할수 없는 상황이 되었습니다.

  • 1분당 수집되는 메트릭이 3년 만에 3억개(300M)-> 14배로 43억개(4.3B)으로 증가.
  • 발생하는 알럿의 증가 –  1분당 2500개 -> 1분당 3만개로 증가.

계속 읽기

marshal / unmarshal  – encode / decode에 대한 go의 개념들

Marshal 이란?

구조체 또는 객체의 데이터를 json으로 byte[]로 만드는 것이 json.Marshal의 역할입니다.   여기까지는 그냥 string이며  http상에서는 문서로써 바로 전달이 가능하지요.  http상에서는 모든게 문서이니깐요 🙂

(marshalling의 원래의미 –  군대에서 준비태세를 갖추는것을 말하는 것인데, 네트워크-전쟁으로 나아가기 전에 어떤 포멧- 무기로 싸울지 준비태세를 갖추는 것으로 이해하면 됩니다)

Serialization 이란?

하지만 일정한 크기로 잘게 나누어서 물 흐르듯이  계속 보내기 위해서는 stream 형태로 전달할 필요가 있습니다.  node.js가 서버 사이드 언어이므로 최상위 객체 EventEmitter바로 밑에 stream 으로 흐르게 딱 박혀있습니다 (왜 갑자기 node.js 이야기를 하냐면 stream이 그만큼 서버 사이트 프로그래밍에 중요하다는 의미이고 node.js 도 stream 형태로 데이터를 전송하는 것이 기본 골격이라는 의미입니다)

 

golang에서는 Encode  (Serialization) 라 불러주세요

golang에서는 serialization, 즉 byte[] 데이터를 stream화 하는 녀석의 이름이 encode라고 부르네요.

golang made

json.Marshal , Encode 의 개념도

계속 읽기