아키텍처 용어집

아키텍처 분야의 개념 38개를 한 장에 모았습니다. 값 객체 · 검색 시스템 · 검색어 파이프라인 · 결합도 등 — 코드베이스에서 뽑아 뜻과 관계를 정리했습니다.

값 객체 (Value Object, VO)
식별자 없이 속성 값으로만 같음을 판단하는 불변 객체. 금액·ID 처럼 원시 타입에 의미와 검증을 입힐 때 쓴다
검색 시스템 (hybrid search, 하이브리드 검색, information retrieval, 정보 검색)
콘텐츠를 이해하고, 색인을 만들고, 검색어에 답하고, 결과를 재고, 그것을 떠받치는 서빙까지 — 콘텐츠 이해 · 색인 · 파이프라인 · 검색어 파이프라인 · 평가 · 로그 · 서빙 · 운영으로 읽는 검색 아키텍처. 색인 내부 구조와 용어는 곁에 둔다
검색어 파이프라인
검색어가 결과가 되기까지 — 쿼리 재작성 · 쿼리 언더스탠딩 · 리트리벌(키워드 · 덴스) · 하이브리드 RRF · 랭킹을 거쳐 결과를 구성하고, 0건이면 대응한다. 싼 것으로 많이 거르고 비싼 것은 적게 쓴다
결합도 (coupling)
한 모듈을 바꿀 때 함께 바꿔야 하는 다른 모듈의 수와 강도. 낮을수록 독립 변경·배포가 쉽다
계층 설계
한 서비스 안에서 도메인·유스케이스·어댑터를 나누고 의존 방향을 정한다. 이 레포는 UseCase 인터페이스 + Outbound Port + Adapter 구조를 표준으로 둔다(ADR-0083)
계층 의존 빌드 게이트
소스의 import 를 빌드 단계에서 검사해 application 이 infrastructure 를 참조하면 빌드를 실패시킨다. 리뷰에 기대지 않고 규칙을 기계로 지킨다
계층 침범 (layer violation)
안쪽 계층이 바깥 계층 타입을 직접 참조하는 상태. 서비스에 JpaRepository 를 바로 주입하는 식이며, 한 번 들어오면 테스트와 교체가 함께 어려워진다
도메인 경계 설계
업무 언어가 바뀌는 곳을 찾아 모델의 경계를 긋고, 경계 안의 규칙을 애그리거트로 담는다. 경계가 틀리면 뒤의 서비스 분리와 계층 설계가 전부 그 오류를 물려받는다
도메인 이벤트 (Domain Event)
도메인에서 일어난 의미 있는 사실을 과거형 이름의 객체로 남긴 것(StockReserved 등). 다른 애그리거트·서비스가 이것에 반응한다
도메인 주도 설계 (DDD, Domain-Driven Design)
업무 전문가와 같은 말(유비쿼터스 언어)로 모델을 만들고, 그 모델이 통하는 경계(바운디드 컨텍스트) 안에서 애그리거트·값 객체로 규칙을 담는 설계 방법론이다. 전략 설계와 전술 설계 두 층으로 나뉘며 업무 규칙이 복잡할 때 값어치가 있다
레이어드 아키텍처 (layered architecture, n-tier)
표현 → 비즈니스 → 데이터 접근 순으로 계층을 쌓고 위에서 아래로만 호출한다. 단순하지만 비즈니스 계층이 데이터 접근 기술에 의존하게 된다
마이크로서비스 (MSA, microservices)
바운디드 컨텍스트마다 독립 배포 단위와 자기 DB 를 두고 API·이벤트로만 통신한다. 팀과 배포를 독립시키는 대신 네트워크 실패와 분산 트랜잭션을 떠안는다
모놀리스 (monolith, monolithic architecture)
모든 기능을 하나의 배포 단위로 묶는다. 호출이 함수 호출이라 빠르고 트랜잭션이 단순하지만, 한 부분의 변경도 전체 재배포가 된다
모듈러 모놀리스 (modular monolith, 폴드 호스트)
도메인마다 모듈 경계와 스키마를 따로 두되 한 프로세스로 띄운다. 이 레포는 order·inventory 같은 도메인을 :feature 라이브러리로 만들어 commerce 호스트 하나에 접는다(ADR-0058·0093)
바운디드 컨텍스트 (Bounded Context, BC)
하나의 도메인 모델과 그 용어가 같은 뜻으로 통하는 경계. 경계 밖에서는 같은 단어도 다른 모델이 되며, 서비스·모듈을 나누는 기준선이 된다
분산 모놀리스 (distributed monolith)
서비스는 나눠 배포하지만 서로의 동기 호출·공유 DB 에 묶여 함께 배포하고 함께 장애 나는 상태. 모놀리스의 결합과 분산의 비용을 둘 다 진다
빈약한 도메인 모델 (anemic domain model)
엔티티가 getter·setter 만 갖고 규칙은 서비스 계층에 흩어진 상태. 같은 검사가 여러 서비스에 복제되고 하나를 빠뜨리면 불변식이 깨진다
상태 모델링
상태를 어떻게 저장하고 어떤 모양으로 읽힐지 정한다. 쓰기 모델과 읽기 모델을 가르거나, 현재 값 대신 변경 이력을 원본으로 둔다
색인 · 파이프라인
원천에서 색인까지. 문서 임베딩은 이 축에서 오프라인으로 일어난다
서비스 지향 아키텍처 (SOA, Service-Oriented Architecture, ESB)
재사용할 업무 기능을 서비스로 떼어 공용 버스(ESB) 같은 중앙 통합 계층으로 엮는다. 중앙 계층이 규칙을 갖게 되는 점이 MSA 와 갈린다
소프트웨어 아키텍처 (software architecture)
요구와 품질 속성을 정하고, 도메인 경계를 긋고, 배포 단위와 통합 방식을 고르고, 서비스 안의 계층과 객체 협력을 설계하는 일이다. 원칙 → 객체 → 계층 → 경계 → 분해 → 통합 → 시스템 설계 → 결정 기록 순으로 넓혀 읽는다
시스템 분해
도메인 경계를 몇 개의 배포 단위와 프로세스로 옮길지, 어떤 아키텍처 스타일로 묶을지 정한다. 코드 경계와 배포 경계를 따로 고를 수 있다는 점이 핵심이다
아키텍처 용어 사전 (glossary, 용어집)
경계·계층·품질·문서화를 읽는 데 필요한 말. 단계·장치가 아니라 그것을 설명하는 용어를 모은다
애그리거트 (Aggregate, aggregate root)
한 트랜잭션에서 함께 일관성을 지켜야 하는 엔티티·값 객체 묶음. 바깥에서는 루트 엔티티를 통해서만 바꾸고, 다른 애그리거트는 ID 로만 참조한다
엔티티 (Entity)
속성이 바뀌어도 식별자로 같은 것임이 유지되는 도메인 객체. 동등성을 ID 로 판단한다
유비쿼터스 언어 (Ubiquitous Language)
한 바운디드 컨텍스트 안에서 업무 전문가와 개발자가 코드·문서·대화에 똑같이 쓰는 말
유스케이스 (Use Case, interactor)
사용자가 시스템으로 이루려는 한 가지 목적과 그 처리 흐름. 이 레포는 유스케이스마다 인터페이스를 두고 입력·출력을 안쪽 data class 로 정한다
응집도 (cohesion)
한 모듈 안의 요소가 같은 목적을 위해 모여 있는 정도. 높을수록 변경 이유가 하나로 모인다
의존성 규칙 (Dependency Rule, 의존성 역전)
소스 코드 의존은 항상 바깥에서 안쪽(도메인)으로만 향한다는 규칙. 안쪽이 바깥 기능이 필요하면 인터페이스를 안쪽에 두고 바깥이 구현한다(의존성 역전)
이벤트 기반 아키텍처 (EDA, event-driven architecture)
상태 변화를 이벤트로 발행하고 관심 있는 서비스가 구독해 반응한다. 발행자는 구독자를 모르므로 서비스를 늘려도 발행 쪽 코드가 바뀌지 않는다. 브로커형과 중재자형 두 토폴로지가 있다
이벤트 소싱 (event sourcing)
현재 상태 대신 상태를 바꾼 이벤트를 순서대로 저장하고, 상태는 그 이벤트를 다시 재생해 만든다. 감사 이력과 시점 복원을 얻는 대신 스키마 변경과 재생 비용을 떠안는다
클린 아키텍처 (clean architecture)
엔티티·유스케이스를 가운데 두고 모든 의존이 안쪽으로만 향하게 한다. 안쪽 계층은 프레임워크를 모르므로 DB·웹 기술을 바꿔도 규칙 코드가 남는다
포트-어댑터 (port and adapter)
코어가 필요한 외부 기능을 인터페이스(포트)로 선언하고 infrastructure 가 그 구현(어댑터)을 제공한다. 코어는 포트만 알고 JPA·Redis 를 모른다
풍부한 도메인 모델 (rich domain model, Domain Model)
상태를 바꾸는 규칙을 엔티티 메서드 안에 두고 상태 필드는 밖에서 직접 못 바꾸게 한다. 재고 예약처럼 불변식이 있는 모델에 쓴다(Fowler 의 Domain Model 패턴)
프레임워크 종속 (framework lock-in)
업무 규칙이 ORM 엔티티·웹 애너테이션에 섞여 프레임워크 없이 테스트하거나 옮길 수 없는 상태
헥사고날 아키텍처 (hexagonal architecture, ports and adapters)
애플리케이션 코어를 포트로 감싸고 웹·DB·메시징을 모두 바깥의 어댑터로 붙인다. 들어오는 쪽(inbound)과 나가는 쪽(outbound)을 대칭으로 다룬다
API 게이트웨이 (API gateway)
모든 API 요청이 지나는 단일 진입점. 경로별 라우팅에 인증 · 속도 제한 · 공통 헤더 같은 횡단 관심사를 얹는다
CQRS (Command Query Responsibility Segregation)
명령(쓰기) 모델과 조회(읽기) 모델을 나눈다. 읽기 모델은 쓰기 쪽 이벤트로 따로 만들어 조회에 맞는 모양으로 둔다. 둘 사이는 최종 일관성이다

다른 분류