목록2024/12 (3)
장미정원

개요DDD (Domain Driven Design)는 비즈니스 영역을 의미하는 도메인을 중심으로 하는 개발 방식입니다. DDD에 대해 자세하게 알아보기 전에 DDD에 대해 자주 하는 오해가 있는 것 같은데요. DDD를 구현하려면 이러이러한 구조를 따라야해! 가 아닌 도메인에 대한 문제를 해결하기 위해 도메인과 비즈니스 로직에 초점을 맞춰 개발할 수 있게 도와주는 도구입니다. DDD의 목표는 낮은 결합도, 높은 응집도 입니다. DDD를 통해 도메인 간의 경계를 나눠 응집도 높은 애플리케이션을 설계할 수 있게 도와줍니다. Ubiquitous LanguageDDD의 특징 중 하나는 유비쿼터스 언어를 사용하는 것입니다. 유비쿼터스 언어는 프로젝트에 참여하는 모든 이해 관계자들이 사용하는 비즈니스 도메인 용어를..

들어가며서버 애플리케이션의 규모가 커질 수록 트래픽이 많아지며 데이터베이스에 쓰기, 수정, 읽기 등등의 작업이 빈번하게 일어나게 됩니다. 이러한 상황에서 서비스에 예상치 못한 장애가 발생할 수 있습니다. 그렇기 때문에 높은 트래픽의 상황에 대비하여 시스템의 확장성, 고가용성, 성능을 높히기 위한 노력이 필요합니다. 데이터베이스의 성능 향상을 위한 기술은 파티셔닝, 샤딩, 레플리케이션에 대해 알아보겠습니다. 파티셔닝데이터베이스 파티셔닝은 데이터베이스의 테이블을 분활하여 저장하는 기술입니다. 데이터베이스에 데이터가 많이 저장되어있다면 그만큼 인덱스 자료구조의 크기가 큰 것이며 쓰기 작업시 B-Tree 재구조화 시간도 오래걸리는등 성능이 많이 떨어지게 됩니다.파티셔닝은 수직(Vertical) 파티셔닝, 수평(..

들어가며클라우드 인프라 기술이 대두되면서 유연한 확장과 안정성을 추구하는 많은 회사에서 MSA 아키텍처를 도입하게 되었습니다. (클라우드 인프라와 MSA) MSA 아키텍처를 도입한다면 기존 모놀리식 아키텍처 시스템의 한계를 극복할 수 있습니다. 여러 서비스 간의 장애 전파, 스케일 아웃, 확장의 어려움 등 여러 이점이 있습니다. 하지만 항상 MSA 아키텍처가 옳은 답은 아닙니다. 복잡한 구조로 유지보수가 힘들 수 있고 비용적인 부분도 무시할 수 없습니다. 이러한 MSA 구조에서 고민해야하는 부분 중 하나인 트랜잭션 작업의 원자성을 어떻게 지킬 수 있을지 알아보겠습니다. 모놀리식과 MSA의 트랜잭션 처리먼저 모놀리식과 MSA의 트랜잭션 처리에 대해 비교해보겠습니다. 설명을 위해 간단하게 토스 앱에서 돈을 ..