MSA 3

CircuitBreaker 로 예방하는 장애 전파(1)

📌 들어가며 소프트웨어는 모두 실패한다 - 버너 보겔스(아마존 부사장) 아무리 열심히 설계하여 개발하고 QA를 진행한다 하더라도 대고객 시스템의 경우 혹은 대고객이 아니더라도 예상치 못한 장애를 마주하는 경우가 발생합니다. 여러 개의 작은 독립적인 마이크로서비스로 분할하는 아키텍처 패턴이 많아지는 요즘, 단일 서브 도메인의 장애가 전체 시스템에 영향을 줄 수 있어 예상치 못한 장애 상황이 발생할 수 있습니다. 이렇게만 보면 MSA 아키텍처로 설계하는 것 자체가 잘못된 것은 아닐까 하는 생각이 들 수 있습니다. 하지만 이는 '완벽한 시스템을 만들기보다, 실패에 유연하고 빠르게 대응 가능한 시스템을 설계해야 한다.' 라는 의미로 해석할 수도 있습니다. 따라서 MSA 환경에서는 단일 서브 도메인(마이크로서비스..

BackEnd/SpringBoot 2023.12.10

DDD란 무엇인가(2) - 도메인, 서브도메인, 바운디드 컨텍스트 등

DDD의 기본 개념에 대해 알아보았던 DDD란 무엇인가(1) 에 이어서 이번 글에서는 DDD에서 많이 사용하는 용어들에 대한 정리를 해보고자 합니다. 회사 프로젝트에서 타회사 AA(Application Architecture) 분들과 설계 단계에서 대화를 나눌 때 많이 접했던 용어들과 그분들이 설명해주셨던 대로 정리해보고자 합니다. 개인적으로 해당 부분은 개발자들의 영역이기보다는 비즈니스 정책을 정하는 현업분들(또는 기획자)의 의견이 필요한 영역이라고 생각합니다. 도메인 - 도메인은 외국 용어이기도 하고 딱히 해당 용어를 우리말로 번역할 만한 단어가 없는 것 같습니다. 도메인은 우리가 해결하고자 하는 문제 영역이라고 볼 수 있습니다. 그냥 '네이버', '쿠팡' 처럼 서비스 자체를 도메인이라고봐도 됩니다...

BackEnd/DDD 2022.12.04

DDD란 무엇인가(1)

DDD(Domain Driven Deisign)의 간단 소개 지난해부터 회사에서 진행하는 차세대 프로젝트에 참여하고 있습니다. 해당 프로젝트의 주요 업무는 MSA와 DDD를 활용해 클라우드 환경으로 모놀리식 시스템을 마이그레이션 하는 것입니다. 이때 자연스럽게 MSA 뿐만 아니라 DDD 용어에 대해 많이 접하고 있습니다. 그래서 오늘은 해당 개념에 대해 정리하고자 이 글을 작성하게 되었습니다. 우선 DDD는 간단하게 정의내리자면 단순한 코딩/아키텍처 구성 방법이 아니라 패턴, 아키텍처 설계 등을 모두 합친 개발의 새로운 패러다임이라고 볼 수 있습니다. 사실 해당 용어는 실무에서 일하시는 분들도 백엔드 개발자가 아니거나 최신의 트렌드를 자주 접할 수 있는 직무가 아닌 레거시 시스템을 주로 운영하고 개발하는..

BackEnd/DDD 2022.10.23