아키텍처(4)
-
[아키텍처] CQRS 패턴
CQRS 패턴에 대해서 간략하게 정리를 하려합니다. MySQL Replication 구성 및 TypeScript의 CQRS 모듈 사용을 경험해보면서 아주 깊이는 없지만, 대략적인 개념들을 정리하였습니다. 이 패턴을 처음 접한것은 '2021년 B마트 전시 도메인 CQRS 적용하기'라는 우아콘 세션이었습니다. 왜 CQRS를 적용해야하는지, 그리고 왜 이렇게 하면 좋은지에 대해서 알게되었고 저도 간단하게나마 한번 적용을 해보았습니다. 사실 '만들어 보았다.'인데 실제 해당 패턴의 장점을 극대화하려면 어느정도 규모가 있는 서비스에서 운영경험이 있어야 되지 않을까 라는 생각이 들었습니다. 개념과 필요성 CQRS는 Command and Query Responsibility Segregation의 약자로 데이터 저장..
2022.12.20 -
서버리스 아키텍처(Serverless Architecture)
개인적으로 임베디드 시스템을 다루면서 '제어보드 생산 -> Bring up -> System Management Setting -> 배포 -> 테스트' 과정을 매번 거쳐보았기에 개발자가 서버로 사용할 인프라 인스턴스를 직접 다룬다는 것이 얼마나 힘들고, 귀찮고, 어려운지 경험한바 있습니다. 이런 것들을 누가 대신 다 제공해준다? 솔직히 아주 솔깃합니다. 특히 서비스에 집중을 해야하거나, infra를 On-Premise로 구축할 필요가 없는 경우 더더욱 그러할 것 같습니다. 최근 AWS 기술 스택을 보면서 서버리스 아키텍처라는 용어가 종종 등장합니다. 개념적으로는 참 오래된 개념이지만, HW 기술이 비약적으로 발전하기 전까지는 각광받지 못한 분야기도 합니다. Serverless라는 용어때문에 혼동이 많은데..
2022.12.19 -
[아키텍처] 스프링 멀티 모듈 설계 - 헥사고날 아키텍처
최근 하나의 모듈로 개발했던 프로젝트를 멀티 모듈로 분할을 진행하면서 과연 올바른 방법으로 멀티모듈이 설계가 된건가... 라는 물음과 이게 과연 적절한 것인가...하는 물음이 발생했습니다. 자료를 찾아보면서 다시금 정리를 해본바... '싹다 갈아 엎을까?'라는 생각이 많이 들고 있습니다. 개인적인 경험으로 보았을 때, 멀티 모듈을 구성하는 이유(분산 아키텍처를 수용하는 이유)는 두가지라고 생각합니다. 단일 실패지점(SPOF)에 의해 전체 시스템이 마비가 되는 것을 방지 높은 응집도와 낮은 결합도를 가지고 유지보수성 증가 그래서 적용은 해보고 싶은데, 참 어렵습니다. 그래서 멘토링 경험을 계기로 인프콘 세션 중 '실전!멀티 모듈 프로젝트 구조와 설계' 라는 주제로 네이버 김대성님이 발표해주신 세션 내용을 ..
2022.12.14 -
[설계] 수직적 분할과 수평적 분할
아키텍처를 설계하는 행위가 아니더라도, 어플리케이션을 설계하거나 모듈 설계 등 설계라는 행위에서 기본적으로 고려해야 될 것이 분할이라는 생각이 많이 듭니다. 특히 지속가능성(관리, 보수 등)을 고려했을 때 논리적 설계를 MECE하게 정의를 잘 하면 잘 할수록 그로인한 이익이 매우 커지기 때문입니다. 카카오 기술 블로그와 SK C&C에서 DDD를 적용하는 과정을 보면서 분할이라는 개념을 정말 '잘!' 이해하여야 한다고 생각했고, 최근 하나의 어플리케이션 프로세스를 멀티모듈로 나누는 과정에서 분할의 어려움을 느꼈기에 기본적인 분할의 개념을 한번 정리해보고자 합니다. 수직적 분할과 횡적(수평적) 분할 일반적으로 분할을 한다고하면 수평적(Horizontal Slicing), 수직적 분할(Vertical Slic..
2022.12.13