Architecture
-
모놀리식 애플리케이션의 분해(분리) 전략 - MicroserviceArchitecture 2024. 3. 27. 22:24
많은 서비스들이 성장하면서 모놀리식 애플리케이션(Monolithic Application) 이 된다. 비즈니스 피처를 붙이고 붙이다 보면 거대한 하나의 덩어리가 되고 기술 부채가 눈덩이처럼 쌓여서 팀의 퍼포먼스를 떨어뜨리는 요인으로 작용하는게 일반적이다. 이때 팀에서는 마이크로 서비스로 분리할 대상을 찾은 뒤에 어떤 전략을 실행해야하는지 선택해야 한다. 가장 일반적으로 선택할 수 있는 전략 두가지를 이야기하고자 한다. 모놀리식 애플리케이션의 분해 전략 컴포넌트 기반 분해(Component-bated Decomposition) 컴포넌트 기반 분해는 (애플리케이션의 논리적 구성 요소인) 컴포넌트를 정제/추출한 후 분산 아키텍처를 점진적으로, 제어 가능한 방향으로 구성하면서 다양한 리팩터링 패턴을 적용하는 방..
-
실시간 데이터 집계 시스템 아키텍처Architecture 2023. 7. 17. 13:15
우리가 사용하는 많은 서비스를 통해 실시간으로 데이터가 집계되는 기능을 매일매일 접하고 있다. 유투브의 라이브 방송에서 시청자 수를 확인한다거나, 게시판 글의 개수처럼 Count를 본다거나 해야할 때다. 그런데 현업에서 오래 일하다 보니 PO/PM Side에서는 '실시간 데이터 집계'라는 기능 자체를 굉장히 쉽게 생각하는 경우가 많아서 구현 난이도에서 발생한 Gap으로 인해 갈등이 일어나거나 PO, PM과 개발자 모두 '실시간 데이터 집계'라는 요구사항에 매몰되서 Over Engineering하는 경우가 많았다. '실시간'이라는 요구사항이 가지는 무게는 생각보다 무겁고, 난이도는 어렵다. 무엇이 중요하고 무엇이 중요하지 않은지 판별할 수 있는 것이 Expert의 역할이고 역량이라고 생각한다. 왜냐하면 실..
-
Monolith를 MSA로 전환을 계획할때 필요한 세가지Architecture 2020. 11. 21. 17:01
시스템을 오랫동안 운영하다보면 자연스럽게 모노리스가 됩니다. 얼마 안됐는데 코드가 이렇게 많아졌어? 라고 생각하신다면 비즈니스가 잘 성장하고 있다는 의미입니다. (자축하셔도 좋습니다.) 하지만 기쁜 마음도 잠시, 간단한 수정을 하더라도 어디에 Side Impact가 있을지 몰라 주저하는 마음이 든다면 이미 시스템에는 신호등에 빨간불이 들어왔다고 보셔야 합니다. 유지보수의 효율성이 떨어지고 있다는 이야기니까요. 자. 그럼 어떻게 해야 할까요? 특정 부분을 MSA로 분리할때가 온겁니다. 그럼 Monolith를 MSA로 전환을 계획할때 필요한 세가지를 알아보시죠. 1. 조직장으로 부터 꼭! 리소스 지원을 받아야 합니다. MSA 전환이나 서비스 분리는 리소스와 시간을 많이 요구하는 작업입니다. 디펜던시가 크던 ..
-
비즈니스 프로세스를 그리자. — BPMN 2.0Architecture 2020. 10. 24. 13:08
소프트웨어 프로젝트 문서를 작성하면서 사용자가 어떻게 사용하고, 시스템은 어떻게 작동하는지 그림으로 나타내야 할때가 다반사이다. 사용자가 이 시점에서 무엇을 해야하고, 입력받은 시스템은 어떻게 동작해야 하는지 그림으로 그리려면 Flow Chart(1921년부터 사용, 1985년 ISO 표준 제정)와 UML을 많이 사용했을 것이다. 하지만 엔지니어링에 포커스를 둔 Flow Chart와 UML은 어딘가 모르게 3% 정도 부족할때가 생기게 마련이다.(혹시.. 나만 그런가?) 2005년에 UML의 복잡성을 과감하게 단순화(Simplify)시킨 새로운 표준이 나왔으니 이름하여 BPMN(Business Process Modeling Notation) 1.0이다. 그리고 여러번의 판올림을 하고 나서 2011년에 BP..
-
슬기롭게 로그(Log)를 쌓는 법Architecture 2020. 7. 22. 11:05
How to Make Effective Logging 모든 언어, 시스템과 프레임 워크를 통틀어서 공통적으로 가지고 있는 기능은 Log입니다. 우리는 응용프로그램이 의도한대로 동작하고 있는지 확인하기 위해서 또는 문제가 발생된 부분이 어디인지 찾기 위해서 로그를 적극적으로 활용하고 있습니다. 그런데 많은 개발자들이 시스템에 남기는 로그를 저마다의 생각과 개성을 반영하여 남기고 있습니다. 지금이라도 웹서버의 access.log를 열어보거나 Graylog같은 모니터링 시스템에서 로그를 확인해 보시기 바랍니다. 로그를 기반으로 시스템이 잘 운영되고 있다고 진단할 수 있나요? 아마도 꽤 오랜시간을 들여다 보거나 한숨이 절로 나오실 겁니다. 결국은 아무렇게 쌓은 로그는 많은 개발자들이 시스템을 운영하는 환경에서 ..
-
AWS에서 효율적인 비용으로 시스템을 운영하기Architecture 2020. 6. 27. 16:01
How to handle the cost of AWS when your system is dramatically growing up. AWS에서 비용을 줄이는 포스팅은 많습니다. 이것저것 줄이고 바꿔서 비용을 효율적으로 사용하는 것이 대부분의 문맥입니다. 하지만 실제로 운영하면서 엔지니어들이 항상 염두에 둘 사항들에 대해서 이야기하는 포스팅을 보지 못했습니다. 그래서 서비스와 시스템이 빠르게 성장함에 따라 시스템 비용을 어떻게 운용해야 하는지 알아보고자 합니다. 클라우드 시스템을 운영하는 마음가짐 - You should change your mindset from IDC to Cloud on operating & planning Systems. 비용 절감 이야기에서 갑자기 마음가짐을 바꾸라는 말이냐 라고..
-
[MSA] 믿는 enum에 발등 찍힌다.Architecture 2020. 4. 7. 22:41
Enum is evil. Enum은 자바에서 상수(이하 코드)를 선언하는 아주 중요하고 전통있는 방법입니다. 저도 이 부분에 대해서는 이견이 없습니다. 하지만 MSA(마이크로 서비스 아키텍처) 환경의 시스템들 사이에서 Enum이 얼마나 큰 걸림돌로 작용하는지 이야기 하고자 합니다. 자바 베이스 시스템을 기준으로 기술하고 있습니다만, 상수에 대한 이슈는 언어와 프레임워크를 초월하는 것으로 이해하시면 좋겠습니다. REST API에서 코드를 전달할때. 자바 개발자들은 상수를 만들때 Enum 타입으로 만들어야 한다는 강박같은 것이 있습니다. 그런데 이런 강박이 시스템간 통신하는 API의 프로토콜에도 그대로 반영되어 나중에 회사의 개발 속도에 발목을 잡는 일이 발생합니다. MSA에서 API를 손쉽게 연동하기 위해..