티스토리 뷰

 

도메인 주도 설계를 통해 마이크로서비스 개발을 접하려는 사람들에게 소개해줄만한 책이다.

다양한 사례와 개념들이 설명이 됐으며 모노리스와 MSA, 기존 전자정부프레임워크에 대한 견해와 MSA에서 사용되는 기술에 대한 정보를 확인할 수 있어 유익했다.

 

개인적으로 아쉬운 점은 저장소 분리를 통해 이원화된 데이터를 two-phase commit 하는 예제가 없었다는 점이다.

본 예제는 책방 사이트를 MSA로 만드는 과정이며 bookCatalog는 몽고디비로 book, gateway, rental 서버는 MariaDB로 구축한다. Kafka를 통한 비동기적인 이벤트 처리를 진행하던 소비자 서버에서 에러가 발생할 경우 생산자 측에서 어떤 식으로 롤백이 진행되는지 궁금했었는데 없었다. 에러가 난 소비자에서 다시 polling을 통해 메시지를 가져와서 처리를 하면 될지, 롤백 이벤트를 통해 공급자에서 처리했던 트랜잭션도 롤백이 가능한지, 내가 잘못생각하는 건지 모르겠지만 이런 구체적인 예시가 있었다면 더 좋았을 것 같다.

 

 

단어 소개

더보기
2단계 커밋(two-phase commit)  분산 시스템에서 모든 참여자가 트랜잭션을 커밋하거나 롤백하기로 합의하는 프로토콜입니다.
3티어  사용자 인터페이스와 데이터베이스, 서버 쪽 애플리케이션의 3개 부분
API 게이트웨이  여러 백엔드 서비스에 대한 API 호출을 중앙에서 집계, 라우팅, 관리하는 중간계층입니다.
API 설계  프론트엔드와 백엔드의 연계를 위한 계약
API 조합(composition)  여러 마이크로서비스의 데이터나 기능을 하나의 API 응답으로 통합하는 과정입니다.
API 퍼블리싱 어댑터  REST API를 발행하는 인바운드 어댑터
API 프락시 어댑터  다른 서비스의 API를 호출하는 아웃바운드 어댑터
BFF(Backend for Frontend)  API 게이트웨이와 같은 진입점을 하나로 두지 않고 프런트엔드의 유형에 따라 각각 두는 패턴
CaaS(Container as a Service)  컨테이너 기반 가상화를 사용해 컨테이너를 업로드, 구성, 실행, 확장, 중지할 수 있는 서비스
CBD(Component Based Development)  소프트웨어를 재사용 가능한 독립적인 컴포넌트들로 분리하여 개발하는 방법론입니다.
Command Query Responsibility Segregation  명령과 조회의 책임을 분리하는 패턴
Config 서비스  마이크로서비스 구성 정보를 중앙에서 관리하고 분산된 서비스들에 제공하는 시스템입니다.
DB I/O(Database Input/Output)  데이터베이스와의 데이터 전송(입력 및 출력) 작업을 의미합니다.
Dependency Inversion Principle  유연성이 극대화된 시스템에서는 소스코드 의존성이 추상에 의존하며, 구체에는 의존하지 않아야 한다
docker-compose  여러 Docker 컨테이너들의 정의와 관계를 YAML 파일로 기술하여 한 번의 명령으로 동시에 실행하게 해주는 도구입니다.
Dockerfile Docker 컨테이너 이미지를 생성하기 위한 명령어들의 집합을 정의하는 스크립트 파일입니다.
DTO(Data Transfer Object)  계층간 데이터 전송을 위한 간단한 객체입니다.
EC2  가상 서버 호스팅 서비스입니다.
ELK 스택  엘라스틱서치, 로그스태시, 키바나라는 세 가지 오픈소스 프로젝트를 기반으로 데이터 분석 환경을 구성항 것이다.
Event-Driven Architecture  시스템은 각기 독립성을 유지하면서 다른 서비스의 이벤트 변화를 기반으로 각 서비스를 연계해서 구성하는 것
GCP(Google Cloud Platfom) Google에서 제공하는 클라우드 컴퓨팅 서비스  리소스 모음입니다.
GKE Google Cloud Platform에서 제공하는 관리형 Kubernetes 컨테이너 오케스트레이션 서비스입니다.
high cohesion 소프트웨어 모듈이나 클래스 내의 기능들이 밀접하게 관련되어 있어서  집중되어 있다는 특징을 의미합니다.
Homebrew macOS 패키지 관리자로, 소프트웨어 설치와 관리를 간편화해줍니다.
IaaS(Infrastructure as a Service) 가상 머신, 스토리지, 네트워크 같은 인프라를 필요한 만큼 적시에 제공하는 서비스
Infrastructure as Code 인프라 구성을 마치 프로그래밍하는 것처럼 처리하고 소수의 인원으로 많은 컨테이너 배포 처리를 할 수 있게 해주는 것
JDL JHipster 애플리케이션의 엔터티와 관계를 선언적으로 정의하는 도메인 언어입니다.
JDL 스튜디오 JHipster Domain Language (JDL) 파일을 시각적으로 디자인하고 관리할  있는  기반 에디터입니다.
JHipster Spring Boot Angular/React/Vue.js 사용하여 모던한 마이크로서비스  모노리식 애플리케이션을 빠르게 개발하기 위한 오픈 소스 애플리케이션 생성 플랫폼입니다.
JHipster 레지스트리 JHipster 애플리케이션들의 설정, 서비스 발견, 그리고 로드 밸런싱을 위한 Eureka 서버기반의 중앙화된 마이크로서비스 관리 플랫폼입니다.
JHipster Online  인터페이스를 통해 JHipster 애플리케이션을 생성하고 JDL 파일을 관리할  있는 온라인 플랫폼입니다.
jib Java 애플리케이션을 Docker OCI 컨테이너 이미지로 빌드하기 위한 Google Cloud에서 제공하는 오픈 소스 플러그인입니다.
JPA Java 애플리케이션에서 관계형 데이터베이스의 데이터를 객체 지향적으로 관리하기 위한표준 인터페이스입니다.
JPQL JPA 위한 객체 지향 쿼리 언어로, 엔터티와 엔터티의 속성을 대상으로 데이터를 조회, 수정, 삭제하는  사용됩니다.
JWT(JSON Web Token) 정보를 JSON 형식으로 인코딩하여 토큰으로 사용되는 컴팩트하고 URL 안전한 자기 서명된 문자열입니다.
kubectl Kubernetes 클러스터를 명령 줄에서 제어하기 위한 CLI 도구입니다.
low coupling 소프트웨어 컴포넌트나 모듈들 사이에 최소한의 의존성이 있는 상태를 의미합니다.
MDD(Model Driven Development) 소프트웨어 개발에서 고수준의 모델을 중심으로하여 코드를 자동 생성하거나 도출하는 방법론입니다.
Microservice Architecture 복잡한 애플리케이션을 작고 독립적인 서비스들로 분리하여 개발, 배포, 운영하는 시스템 디자인 접근법입니다.
Minimum Viable Product 제품의 핵심 기능만을 포함하여 최소한의 노력으로 시장에 출시되는 초기 버전입니다.
MongoDB 확장 가능하고 유연한 스키마를 가진 NoSQL 기반의 문서 지향 데이터베이스 시스템입니다.
OOAD(Object Oriented Analysis Design) 객체 지향 원칙을 기반으로 시스템의 분석과 설계를 수행하는 방법론입니다.
Open-Closed Principle 개방에는 관대하고 수정에는 폐쇄적인 객체지향 원칙
OR 매퍼 객체 지향 프로그래밍 언어와 관계형 데이터베이스 사이의 데이터 변환을 자동화하는 프로그래밍 기법입니다.
PaaS(Platform as a Service) 개발, 실행, 관리에 필요한 플랫폼과 인프라를 클라우드 서비스로 제공하는 모델입니다.
PIM(Platform Independent Model) 특정 기술 플랫폼에 의존하지 않는 고수준의 모델을 의미하여, 시스템의 비즈니스 로직과 기능을 중점으로 설명합니다.
PSM(Platform Specific Model) 특정 기술 플랫폼에 맞게 세부화된 모델을 의미하여, 구현과 관련된 세부 사항을 포함합니다.
QueryDSL 자바 기반의 타입-세이프한 쿼리 생성 라이브러리로, SQL, JPA, JDO 같은 쿼리 언어를 안정적으로 구성할  있게 돕습니다.
Repository 인터페이스 도메인 객체의 컬렉션을 관리하며, 저장, 검색, 삭제 등의 CRUD 연산을 추상화한 인터페이스입니다.
REST API 성숙도 API RESTful 원칙에 얼마나 부합하는지를 나타내는 수준을 뜻하며, 대표적으로 Leonard Richardson 4단계 모델로 설명됩니다.
REST(Representational State Transfer)  상의 자원을 URL 표시하고, HTTP 메서드를 통해 자원에 대한 CRUD 연산을 수행하는 소프트웨어 아키텍처 스타일입니다.
RIA  브라우저 내에서 데스크탑 애플리케이션과 유사한 사용자 경험과 기능성을 제공하는  애플리케이션입니다.
Root Entity 도메인 모델 내에서 집계의 경계를 정의하며, 해당 집계의 생명주기와 비즈니스 규칙을 관리하는 주요 엔터티입니다.
SOA(Service Oriented Architecture) 기능을 서비스로 분리하고,  서비스들이 네트워크를 통해 상호작용하도록 설계된 소프트웨어 아키텍처 패러다임입니다.
SPA(Single-Page Application)  페이지를 새로고침 없이 동적으로 재작성하여 사용자에게 매끄러운 경험을 제공하는  애플리케이션입니다.
Spring Cloud Netflix 라이브러리 마이크로서비스 아키텍처를 위한 패턴들(서비스 발견, 회로 차단, 클라이언트  로드 밸런싱 ) 쉽게 구현할  있도록 Netflix OSS 컴포넌트를 Spring Cloud 통합하는 라이브러리입니다.
Spring Data JPA JPA 기반으로 데이터 액세스를 간소화하며, 저장소-agnostic(저장소에 중립적) 리포지토리 인터페이스를 제공하는 Spring Data 일부입니다.
SQL 매퍼 객체와 SQL 쿼리 간의 매핑을 담당하여, 객체의 데이터를 데이터베이스에 저장하거나 데이터베이스로부터 데이터를 조회하여 객체로 변환하는 역할을 합니다.
Twelve-Factor 클라우드 네이티브 애플리케이션을 개발하고 배포하기 위한 12가지 원칙과 모범 사례를 제시하는 방법론입니다.
two pizza team 아마존의 작업 그룹 크기를 나타내는 개념으로,  피자로 모든  멤버가 식사할  있는 작은 규모의 팀을 의미합니다. 이렇게 작은 팀은 효율성과 협업을 촉진하기 위해 고안되었으며, 불필요한 복잡성을 피하고 신속한 결정과 실행을 가능하게 합니다.
UI 레이아웃 설계 사용자 인터페이스 요소의 위치와 배치를 계획하여 사용자 경험을 최적화하는 과정입니다.
UI 레이아웃  페이지,  또는 인터페이스에서 요소들의 위치와 배치를 결정하는 디자인 구성요소입니다.
UI 컴포지트 여러 개의 UI 요소  컴포넌트를 조합하여   UI 구성물을 만드는 디자인  개발 접근방식입니다.
XP(eXtreme Programming) 소프트웨어 개발을 위한 애자일 개발 방법론  하나로, 빈번한 피드백, 작은 단위의 개발 사이클, 고객과의 밀접한 협력 등을 강조하여 소프트웨어 품질과 개발 생산성을 향상시키는 방법론입니다.
yaml 사람이 쉽게 읽을  있는 데이터 직렬화 형식으로, 구조화된 데이터를 표현하는  사용되는 텍스트 형식입니다.
가상 머신(VM; Virtual Machine) 하드웨어에서 독립적으로 동작하는 가상 환경으로, 다른 운영 체제나 소프트웨어를 실행하고 테스트하기 위한 가상 컴퓨터를 생성하고 관리하는 기술입니다.
값 객체(Value Object)  자체로 고유하게 식별되지 않고 불변하며, 주로 도메인 모델에서 값을 나타내는 객체로사용되는 객체입니다.
강 결합 소프트웨어 구성 요소가 서로 높은 의존성을 가지며 변경하기 어려운 상태를 나타내며, 이로 인해 유지 보수와 확장이 어려운 설계 문제를 일으킬  있습니다.
객체-관계 매핑(OR Mapping) 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터 변환과 상호 작용을 자동화하는 기술로, 객체와 데이터베이스 간의 매핑을 통해 데이터를 저장, 검색  조작할  있게 합니다.
객체지향 분석설계 시스템을 객체와 그들의 상호 작용으로 모델링하고, 요구사항을 충족하기 위한 구조화된 소프트웨어 설계를 개발하기 위한 절차입니다.
결과적 일관성 시스템의 상태가 모든 동작이 완료된 후에만 일관성을 유지하는 속성으로, 분산 시스템에서 데이터 일관성을 보장하는 개념입니다.
고운 입자(fine-grained) 작은 단위 또는 미세한 레벨의 세부 사항을 나타내는 것을 의미하며, 일반적으로 상세하고정교한 조절 또는 분석을 가능하게 합니다.
공개 호스트 서비스(OHS; Open Host Service) 바운디드 컨텍스트에 대한 접근을 제공하는 프로토콜이나 인터페이스
공유 커널(Shared Kernel) 바운디드 컨텍스트 사이에 공통적인 모델을 공유하는 관계
관심사의 분리(separation of concerns) 소프트웨어 설계 원칙으로,  모듈이나 컴포넌트가  가지 주요 관심사에 집중하고 다른관심사와는 분리되어 있는 원칙을 의미합니다.
내결함성(fault tolerance) 시스템이 하드웨어 또는 소프트웨어 오류, 장애 또는 외부 공격에도 계속해서 안정적으로 동작하고 가용성을 유지하는 능력을 나타내며, 장애 상황에서도 정상적인 서비스를 제공할  있는 시스템의 속성입니다.
내부 아키텍처(inner architecture) 소프트웨어 또는 시스템의 내부 구조와 구성 요소를 설명하는 것으로, 시스템의 동작  구현을 이해하고 관리하는  중요한 역할을 합니다.
내부 영역 핵심 비즈니스 논리  애플리케이션의 핵심 기능이 위치하는 영역으로, 외부 영역과 인터페이스되는 중요한 부분입니다.
넷플릭스 OSS 넷플릭스에서 개발하고 공개한 다양한 오픈 소스 소프트웨어 프로젝트 모음으로, 클라우드 기반 서비스  마이크로서비스 아키텍처를 지원하는 도구와 라이브러리를 포함합니다.
느슨한 결합 시스템의 구성 요소 간의 상호 의존성이 낮고, 하나의 요소의 변경이 다른 요소에 미치는 영향이 적은 소프트웨어 설계 원칙을 나타냅니다.
다기능 팀(Cross-Functional Team) 다양한 전문성을 가진 구성원으로 구성된 팀으로, 프로젝트나 작업을 효율적으로 수행하기 위해 필요한 모든 역할과 기술을 내부에서 제공합니다.
단순한 설계(Simple Design) 소프트웨어 시스템이 가장 기본적이고 명확하며 불필요한 복잡성을 최소화한 상태로 유지되는 설계 원칙을 의미합니다.
데브옵스(DevOps) 소프트웨어 개발과 운영을 통합하여 개발  배포 프로세스를 자동화하고 협력을 촉진하여 소프트웨어 개발과 운영의 효율성을 높이는 문화와 방법론입니다.
데이터베이스 중심 아키텍처 데이터베이스가 시스템의 핵심 요소로 사용되며, 데이터 저장  관리가 중요한 역할을 하는 아키텍처 디자인 방식을 나타냅니다.
데이터 액세스 인터페이스 애플리케이션과 데이터베이스 시스템 간의 상호 작용을 가능하게 하는 프로그래밍 인터페이스로, 데이터를 저장, 검색  수정하는  사용됩니다.
데이터 액세스(Data Access) 데이터를 저장, 검색, 갱신  삭제하기 위해 데이터베이스 또는 다른 데이터 저장소와 상호 작용하는 프로세스 또는 기술을 의미합니다.
도메인 모델링 특정 도메인(: 비즈니스 분야) 대한 개념, 규칙  엔터티를 정의하고  관계를 모델링하는 과정으로, 소프트웨어 설계와 개발에 활용됩니다.
도메인 모델(Doman Model)  특정 비즈니스 도메인의 중요한 개념, 엔터티, 관계, 규칙 등을 모델링한 소프트웨어의 핵심 구성 요소입니다.
도메인 서비스 도메인 모델 내에서 비즈니스 로직을 수행하거나 관련 작업을 처리하기 위한 서비스 레이어를 나타내며, 특정 기능 또는 업무를 지원하는 역할을 합니다.
도메인 이벤트 도메인 모델 내에서 중요한 사건이나 변화를 나타내는 객체로, 시스템 내에서 발생하는 상태 변경을 기록하고 다른 부분에 알리는  사용됩니다.
도메인 이벤트 발행 어댑터 도메인 이벤트를 다른 시스템이나 구성 요소로 전파하거나 외부 시스템과 상호 작용하기 위한 매개체로 사용되며, 이벤트 기반 아키텍처에서 중요한 역할을 합니다.
도메인 이벤트 핸들러 도메인 이벤트가 발생할  이를 수신하고 처리하는 역할을 하는 코드 블록 또는 컴포넌트입니다.
도메인 주도 설계  비즈니스 도메인을 중심으로 소프트웨어를 설계하고 모델링하는 방법론으로, 비즈니스 요구사항을 먼저 이해하고 도메인 모델을 구축하여 소프트웨어를 개발하는 접근 방식을 강조합니다.
도커 컨테이너 기반 가상화 기술로, 소프트웨어 애플리케이션을 환경과 상관없이 쉽게 배포하고 실행할  있게 해주는 플랫폼입니다.
도커 대시보드 도커 컨테이너와 관련된 정보를 시각적으로 표시하고 관리할  있는  기반 사용자 인터페이스 도구입니다.
도커 컨테이너 애플리케이션과 필요한 모든 종속성을 패키지화하여 독립된 실행 환경에서 실행할  있도록 하는 가벼운 가상화 기술입니다.
동기 통신 송수신이 발신자와 수신자 사이에서 실시간으로 동시에 이루어지며, 송신자가 데이터를 보내고 수신자가 응답을 받을 때까지 대기하는 통신 방식입니다.
디플로이먼트(Deployment) 컨테이너화된 애플리케이션을 관리하고 확장할  있도록 도와주는 쿠버네티스 리소스로, 애플리케이션의 버전 관리와 자동 롤아웃을 지원합니다.
레이어드 아키텍처(Layered architecture) 소프트웨어를 계층적으로 구성하여  레이어가 특정 역할을 수행하며 효과적인 모듈화와유지보수를 가능하게 하는 아키텍처 패턴입니다.
레플리카셋(ReplicaSet) 동일한 파드의 여러 복제본을 관리하고 유지하며, 원하는 수의 파드 인스턴스가 항상 실행되도록 보장하는 쿠버네티스 리소스입니다.
로그스태시(Logstash) 다양한 소스에서 로그 데이터를 수집하고 가공하여 다른 시스템으로 전송하는 오픈 소스 데이터 파이프라인 도구입니다.
로드 밸런싱 네트워크 트래픽이나 작업 부하를 여러 서버 또는 자원으로 분산하여 시스템의 성능을 향상시키고 가용성을 높이는 기술 또는 프로세스를 의미합니다.
리본(Ribbon) 마이크로서비스 아키텍처에서 클라이언트 사이드 로드 밸런싱과 장애 복구를 지원하는 라이브러리로, 서비스  통신을 효율적으로 관리합니다. Netflix에서 개발했으며, 이제는 Spring Cloud 프로젝트의 일부입니다.
리액티브 선언문(The Reactive Manifesto) 분산 시스템을 구축할  반응형, 탄력적, 메시지 주도, 기능 중심의 아키텍처 원칙을 강조하는 문서로, 높은 가용성과 응답성을 갖는 소프트웨어 시스템을 위한 지침을 제시합니다.
리팩터링(refactoring) 소프트웨어 코드를 재구성하여 가독성, 유지보수성, 성능 등을 향상시키고 기능을 변경하지 않는 작은 단계로 진행되는 코드 개선 과정입니다.
리포지토리 패턴 데이터베이스와 상호 작용하기 위한 인터페이스를 제공하고, 데이터베이스 접근 코드를 추상화하여 소프트웨어의 유지보수성과 확장성을 향상시키는 디자인 패턴입니다.
마이바티스 자바 언어를 사용하여 SQL 쿼리와 자바 객체 간의 매핑을 효율적으로 처리하는 데이터베이스 액세스 프레임워크입니다.
마이크로서비스 도출 모노리틱 애플리케이션을 작은, 독립적인 서비스로 분해하고 이러한 서비스 간의 경계를 정의하는 프로세스입니다.
마이크로서비스 아키텍처(MSA) 작고 독립적인 서비스로 애플리케이션을 분해하여 개발, 배포  관리를 간소화하고 확장성과 유연성을 향상시키는 아키텍처 패턴입니다.
마이크로서비스 후보 모노리틱 애플리케이션에서 개별적인 기능 또는 서비스로 분리하기에 적합한 부분으로, 독립적으로 개발  배포 가능한 영역을 나타냅니다.
마이크로 프런트엔드(Micro Frontend) 애플리케이션의 프런트엔드를 작은, 독립적인 모듈로 분리하여 개발, 배포, 유지보수하는 아키텍처 패턴입니다.
메시지 기반(Message Driven) 시스템  통신이나 컴포넌트  상호작용을 비동기 메시지를 통해 이루어지며, 이벤트 또는 메시지를 중심으로 동작하는 아키텍처를 나타냅니다.
메시지 브로커(Message Broker) 애플리케이션  메시지 전달을 조정하고 라우팅하는 중개자로, 비동기 메시징 시스템의 핵심 구성 요소입니다.
명령 조회 책임 분리 읽기와 쓰기 작업을 분리하여 성능 최적화와 유연한 데이터 모델을 지원하는 아키텍처 패턴입니다.
모노리스(Monolith) 애플리케이션의 모든 구성 요소가 단일 단위로 통합된 소프트웨어 아키텍처를 의미하며, 전통적인 방식으로 개발된 애플리케이션을 나타냅니다.
모니터링 서비스 시스템 또는 애플리케이션의 상태와 성능을 지속적으로 추적하고,  정보를 시각화하고 분석하여 문제를 감지하고 해결하는  사용되는 도구 또는 서비스입니다.
바운디드 컨텍스트(Bounded Context) 도메인 주도 설계(DDD)에서 사용되는 개념으로, 특정 도메인 모델의 경계를 정의하고 해당 경계 내에서 언어, 규칙  모델을 일관되게 정의하는 것을 의미합니다.
발행된 언어(PL; Published Language) 특정 바운디드 컨텍스트 내에서 사용되며, 해당 컨텍스트에서 정의한 용어와 규칙을 포함하는 언어입니다. 이것은 도메인 주도 설계(DDD)에서 사용되는 개념  하나입니다.
배포 스크립트 소프트웨어 애플리케이션을 자동으로 빌드, 패키징, 배포하고 설정을 관리하는 스크립트 또는 명령어의 집합입니다.
배포 주기 애플리케이션의 개발에서 배포까지의 자동화된 연속 프로세스로, 코드 변경 사항을 테스트하고 스테이징 환경을 통해 프로덕션 환경으로 안전하게 배포하는 절차를 나타냅니다.
백로그(backlog) 소프트웨어 프로젝트에서 아직 완료되지 않은 모든 작업 항목을 나열하고 추적하는 목록 또는 대기열을 나타냅니다.
백엔드 모델링 서버  소프트웨어의 데이터 구조, 비즈니스 로직,  데이터베이스 설계를 디자인하고 모델링하는 과정을 나타냅니다.
베어 메탈 어떤 소프트웨어도 담지 않은 하드웨어 서버 제품군 자체
변화 가능성(mutability) 데이터나 객체가 변경 가능한지 여부를 나타내며, 변경 가능한 객체는 내부 상태를 수정할 있지만 변경 불가능한 객체는 수정이 불가능한 속성을 가집니다.
비동기 통신 송신자와 수신자 간의 데이터 전송이 실시간 동기화 없이 이루어지며, 송신자가 데이터를 보낸 후에도 수신자가 독립적으로 처리할  있는 통신 방식입니다.
비즈니스 로직(business logic) 애플리케이션에서 비즈니스 규칙과 프로세스를 정의하고 구현하는 부분으로, 실제 업무 작업과 관련된 로직을 나타냅니다.
비즈니스 민첩성(Agility) 기업이 빠르게 변화하고 적응하며 경쟁 환경에 민첩하게 대응할  있는 능력을 나타냅니다.
빌드 소스 코드 파일을 컴파일하고, 테스트를 실행하며, 실행 파일 또는 배포 가능한 소프트웨어를 생성하는 과정을 의미합니다.
빌드/배포 파이프라인 소프트웨어 개발에서 코드 빌드, 테스트, 배포 단계를 자동화하고 연결하여 지속적인 통합 배포를 실현하는 자동화 프로세스입니다.
빌드 잡(Build Job) 빌드 파이프라인에서 특정 단계나 작업을 수행하는 단위로, 코드 컴파일, 테스트 실행, 패키징 등과 같은 빌드 과정을 나타내는 작업 단위입니다.
사가(Saga) 분산 시스템에서 여러 트랜잭션 단계 간의 상태와 롤백을 관리하는 방법으로, 복잡한 비즈니스 프로세스를 보다 안정적으로 처리하는 패턴입니다.
사용자 인터페이스 사용자와 컴퓨터 시스템 간의 상호 작용을 가능하게 하는 시스템의 일부로, 사용자가 애플리케이션을 조작하고 정보를 시각적으로 표현하는 방법을 제공합니다.
사이드카(Sidecar) 패턴 애플리케이션과 함께 별도의 컨테이너로 실행되며, 보조 기능 또는 서비스를 제공하여 애플리케이션을 확장하고 유지 관리하는 아키텍처 패턴입니다.
상류(Upstream) 공급하는 컨텍스트
생산자(producer) 이벤트를 생성하고 발행하여 다른 마이크로서비스나 컴포넌트에 데이터나 정보를 제공하는 역할을 합니다.
서브도메인 비즈니스 도메인을  작은 영역으로 분할하여 특정 마이크로서비스가 관리하는 범위를 나타냅니다.
서비스 구현체 마이크로서비스 아키텍처에서 특정 기능을 수행하는 서비스의 구체적인 코드 또는 구현을나타냅니다.
서비스 디스커버리(Service Discovery) 분산 시스템에서 서비스 인스턴스의 위치와 상태를 자동으로 검색하고 감지하여 서비스  통신을 관리하는 기술 또는 프로세스를 의미합니다.
서비스 레지스트리 패턴 분산 시스템에서 서비스의 정보를 등록하고 검색하기 위한 중앙 집중식 레지스트리를 사용하는 아키텍처 패턴입니다.
서비스 메시 마이크로서비스 아키텍처에서 서비스  통신, 보안, 모니터링  관리를 효율적으로 제공하기 위한 인프라 레벨의 네트워크 추상화를 제공하는 솔루션입니다.
서비스 인터페이스 서비스나 컴포넌트가 다른 시스템, 모듈 또는 사용자와 상호 작용하기 위해 노출하는 메서드, 함수 또는 엔드포인트를 정의하는 계약 또는 API 의미합니다.
서비스(Service) 소프트웨어에서 특정 기능 또는 업무를 수행하기 위해 독립적으로 구현된 모듈 또는 컴포넌트를 나타냅니다.
서킷 브레이커(Circuit breaker) 분산 시스템에서 장애가 발생할  특정 서비스 호출을 일시적으로 차단하여 전체 시스템의 과부하를 방지하고 장애 회복을 지원하는 패턴입니다.
셀프 치유(Self-healing) 시스템에서 발생하는 오류나 장애를 자동으로 감지하고 복구하거나 대처하는 능력을 의미합니다.
소비자와 공급자(Customer-Supplier) 서비스  의존 관계를 나타내며, 소비자는 다른 서비스의 기능을 사용하는 측면에서 의존하고, 공급자는 해당 기능을 제공하고 있는 서비스를 나타냅니다.
소비자(consumer) 다른 마이크로서비스가 제공하는 기능 또는 데이터에 의존하는 서비스 또는 컴포넌트를 나타냅니다.
수평 확장(Horizontal scaling) 시스템의 성능을 향상시키기 위해 서버나 자원을 추가하여 처리 능력을 확장하는 방식으로,  많은 요청을 처리할  있도록 시스템을 확장하는 것을 의미합니다.
순수한 자바 객체(POJO; Plain Old Java Object) 특별한 제약이나 프레임워크와 독립적으로, 간단하게 자바 클래스로 구현된 일반적인 객체를 의미합니다.
스케일 아웃(Scale-out) 시스템의 성능을 향상시키기 위해  많은 서버 또는 자원을 추가하여 처리 능력을 늘리는방식으로, 수평 확장의  형태입니다.
스케일 업(Scale-up) 시스템의 성능을 향상시키기 위해 하나의 서버 또는 자원의 성능을 업그레이드하는 방식으로, 수직 확장의  형태입니다.
스크럼 애자일 소프트웨어 개발 방법론  하나로, 반복적이고 협업 중심의 개발 프로세스를 강조하여 프로젝트를 관리하고 소프트웨어를 개발하는 방법입니다.
스크럼 미팅 스크럼 프로세스에서 팀이 주기적으로 모이는 회의로, 백로그 관리, 스프린트 계획, 일일 스탠드업, 검토  회고와 같은 다양한 목적을 가지고 있습니다.
스크럼 팀 애자일 방법론인 스크럼에서 협업하며 제품을 개발하는 개발팀으로, 개발자, 테스터, 프로덕트 오너, 스크럼 마스터  다양한 역할로 구성됩니다.
스파게티 코드 구조가 혼란스럽고 얽힌, 유지보수가 어려운 소스 코드를 나타내며, 간결하고 구조화된 코드가 아니라 여러 개의 무작정 연결된 제어 흐름을 갖는 코드를 의미합니다.
스파이크 솔루션(spike solution) 새로운 기술, 개념, 또는 아이디어를 검증하고 실험하기 위해 짧은 시간 동안 빠르게 개발된 프로토타입 또는 시범적인 솔루션을 의미합니다.
스프린트 스크럼과 같은 애자일 개발 방법론에서 사용되는 일정한 기간 동안의 개발 활동을 나타내며, 주로 2주에서 4 정도의 짧은 시간 동안 제품 개발을 진행하는 단위입니다.
스프린트 계획 스크럼 프로세스에서  스프린트를 위한 작업을 선택하고 우선순위를 정하며, 개발 팀이 스프린트 동안 수행할 작업을 계획하는 회의입니다.
스프링 데이터(Spring Data) 스프링 프레임워크와 통합하여 데이터베이스 액세스  조작을 단순화하고 표준화하는 도구와 라이브러리 모음입니다.
스프링 부트 스프링 프레임워크 기반의 자바  애플리케이션을 빠르게 개발하고 실행하기 위한 프레임워크로, 설정과 빌드를 간소화하고 개발 생산성을 향상시키는 도구입니다.
스프링 시큐리티(Spring Security) 스프링 기반 애플리케이션에서 인증, 권한 부여  보안 관련 작업을 처리하기 위한 강력한 보안 프레임워크입니다.
스프링 클라우드 컨피그(Spring Cloud Config) 분산 시스템의 구성 정보를 중앙에서 관리하고 서비스에 동적으로 제공하는 서비스 구성  관리 도구입니다.
스프링 클라우드(Spring Cloud) 마이크로서비스 아키텍처를 위한 스프링 기반의 클라우드 네이티브 개발 도구와 라이브러리 모음으로, 분산 시스템을  쉽게 구축하고 관리하기 위한 기술 스택을 제공합니다.
스프링 API 게이트웨이 서비스 여러 마이크로서비스로부터 들어오는 API 요청을 받아 중앙 집중식으로 라우팅하고 관리하는 서비스로, 보안, 로드 밸런싱, 라우팅 등의 기능을 제공합니다.
시연 초기에 정의한 백로그가 모두 구현되고 그 요건을 만족하는지 확인하는 자리
실패를 고려한 설계 시스템이 예상치 못한 오류나 장애 상황에서도 안정적으로 동작하고 회복할  있도록 고려된 소프트웨어 또는 시스템의 설계 원칙을 적용하는 것을 의미합니다.
쓰기 모델 데이터베이스 또는 저장 시스템에서 데이터를 생성, 수정 또는 업데이트하는 동작에 관한 모델로, 데이터의 변경을 다루는 방식을 정의합니다.
아마존 웹 서비스(AWS; Amazon Web Service) 클라우드 컴퓨팅  다양한 클라우드 기반 서비스를 제공하는 아마존의 클라우드 컴퓨팅 플랫폼입니다.
아웃바운드 어댑터(outbound adapter) 외부 시스템 또는 서비스와의 통합을 담당하는 컴포넌트로, 내부 어플리케이션의 데이터를 외부로 전송하고 상호 작용합니다.
아웃바운드 포트 헥사고날 아키텍처에서 내부 어플리케이션과 외부 시스템 또는 서비스 간의 통신을 관리하고 제어하기 위한 인터페이스로, 내부 어플리케이션에서 외부로 데이터를 전송하는 역할을 합니다.
아키텍처 유연성(flexibility) 시스템이 변화에 대응하고 쉽게 수정, 확장  개선될  있는 능력을 나타냅니다.
아파치 카프카 대규모 실시간 데이터 스트리밍  메시지  시스템으로, 데이터를 안정적으로 수집, 전송  처리하는  사용되는 오픈 소스 분산 데이터 플랫폼입니다.
애그리거트 루트 도메인 주도 설계(DDD)에서 핵심 엔터티로, 관련된 엔터티와  객체의 그룹을 캡슐화하고 통제하는  사용되는 루트 엔터티를 나타냅니다.
애그리거트 패턴 도메인 주도 설계(DDD)에서 연관된 엔터티와  객체를 하나의 논리적 단위로 그룹화하고 캡슐화하여 데이터 일관성을 관리하는 디자인 패턴입니다.
애그리거트(Aggregate) 도메인 주도 설계(DDD)에서 관련된 엔터티와  객체를 하나로 묶어서 데이터 일관성과 불변성을 유지하며 캡슐화하는 디자인 패턴의 개념입니다.
애너테이션(Annotation) 소스 코드에 메타데이터를 추가하는 방식으로, 컴파일러, 런타임, 또는 개발 도구에게 정보를 전달하거나 처리 지침을 제공하는 주석과 비슷한 역할을 하는 Java 기능입니다.
애저(Azure) 마이크로소프트(Microsoft)에서 제공하는 클라우드 컴퓨팅 플랫폼으로, 인프라스트럭처, 플랫폼  소프트웨어 서비스를 제공하여 클라우드 기반 애플리케이션  인프라스트럭처를 개발, 배포  관리할  있는 환경을 제공합니다.
애플리케이션 서비스 클라우드 환경에서  애플리케이션  API 배포, 관리하고 확장할  있는 플랫폼 서비스로, 개발자가 인프라 관리에 신경 쓰지 않고 애플리케이션에 집중할  있도록 도와줍니다.
액터(Actor) 병렬  분산 시스템에서 동작하는 독립적인 개체로, 메시지를 주고받으며 상태를 가지고 있으며 동시성을 다루기 위한 모델을 나타냅니다. 예를 들어, Akka 같은 액터 모델 라이브러리가 있습니다.
업무 규칙 조직이나 시스템 내에서 적용되는 정해진 규정 또는 지침으로, 업무 프로세스, 정책, 절차 등을 정의하고 제어하기 위한 규정을 나타냅니다.
업무 기능 분해 복잡한 업무를 작은 기능 단위로 나누고 구성하여 업무를 보다 효율적으로 관리하고 개선하기 위한 방법입니다.
엔보이(Envoy)  클라우드 환경에서 서비스  통신과 네트워크 프록시 역할을 수행하는 오픈 소스 프록시 로드 밸런서 프레임워크입니다.
엔터프라이즈 애플리케이션 아키텍처 패턴 크고 복잡한 비즈니스 시스템을 설계하고 구축하기 위한 일련의 개체, 규칙  모범 사례로 구성된 설계 지침  템플릿의 모음입니다
엔티티 데이터베이스에서 정보를 저장하고 관리하기 위한 개체로, 보통 비즈니스 애플리케이션의핵심 데이터 구성 요소를 나타냅니다.
엘라스틱서치(Elasticsearch) 검색  분석 엔진으로, 대용량의 데이터를 신속하게 색인하고 검색하는  사용되며, 오픈 소스로 제공됩니다.
열거형 클래스 일련의 상수 값을 정의하고 유형 안전성을 제공하는 자료형으로, 한정된  집합을 나타내는  사용됩니다.
오토스케일링 클라우드 환경에서 자원 사용량에 따라 자동으로 서버 인스턴스를 추가하거나 제거하여 애플리케이션의 성능과 가용성을 유지하는 기술입니다.
오픈시프트(Openshift) 컨테이너 오케스트레이션  애플리케이션 개발  배포를 지원하는 레드햇(Red Hat) 컨테이너 플랫폼입니다.
외부 구성 저장소 패턴 애플리케이션의 구성 정보를 외부 저장소에 저장하고 관리하여 애플리케이션을 보다 유연하게 구성할  있도록 하는 아키텍처 패턴입니다.
외부 시스템 주어진 컨텍스트나 환경에서 현재 관련이 있는 외부의 독립적인 소프트웨어, 서비스 또는 하드웨어입니다.
외부 아키텍처(outer architecture) 마이크로서비스와 상호 작용하는 외부 시스템, 서비스  인프라를 나타내며, 서비스 경계밖의 요소들을 관리하는 아키텍처 구성을 지칭합니다.
외부 영역  마이크로서비스와 상호 작용하는 외부 시스템, 서비스, 데이터 소스  인프라를 포함하는 환경을 나타내며, 서비스 경계를 벗어나는 요소들을 관리하는 영역을 의미합니다.
원자성(atomicity) 트랜잭션의 기본 속성으로, 트랜잭션 내의 모든 작업이 완전하게 실행되거나 전혀 실행되지 않는 것을 보장하는 것을 의미합니다.
유레카(Eureka) Netflix에서 개발한 서비스 디스커버리  로드 밸런싱 서버로, 마이크로서비스 아키텍처에서 서비스 간의 등록, 검색  로드 밸런싱을 지원합니다.
유비쿼터스 언어(Ubiquitous Language) 소프트웨어 개발 팀과 비즈니스 도메인 전문가 간의 공통 언어를 의미하며, 이를 통해 소프트웨어 개발과 비즈니스 이해를 조화롭게 하고 소프트웨어를 도메인 요구사항에 맞게 개발하는 개념입니다.
유스케이스(use case) 소프트웨어나 시스템의 기능을 나타내는 개념으로, 사용자의 요구사항이나 시스템의 동작을 시나리오로 기술하여 시스템의 행동을 이해하고 문서화하는  사용됩니다.
유연성(Elastic) 서비스의 크기를 동적으로 조절하고 자원을 확장 또는 축소하여 변화에 대응할  있는 능력을 나타냅니다.
응답성(Responsive) 소프트웨어 시스템이 사용자 요청에 신속하게 응답하고, 빠르게 처리하여 사용자 경험을 최적화하는 능력을 의미합니다.
이벤트 기반 아키텍처(EDA)  서비스가 이벤트와 메시지를 주고받으며 비동기 방식으로 상호 작용하는 아키텍처 패턴으로, 느슨한 결합과 확장성을 강조합니다.
이벤트 메시지 기반 비동기 통신 시스템 컴포넌트가 이벤트나 메시지를 비동기적으로 송수신하여 효율적인 통신과 느슨한 결합을 가능하게 하는 통신 방식입니다.
이벤트 설계 시스템에서 발생하는 중요한 사건이나 상태 변경을 정의하고, 이를 이벤트 메시지 형태로 표현하는 프로세스를 나타냅니다.
이벤트 소싱 패턴 모든 시스템 상태 변경을 이벤트로 기록하고 저장하여 데이터베이스를 변경하지 않고 상태를 재현하고 복원하는 패턴입니다.
이벤트 스토밍 워크숍 도메인 지식을 공유하고 비즈니스 프로세스를 시각화하기 위한 협력적인 워크숍 형태로, 도메인 주도 설계와 마이크로서비스 아키텍처를 지원하는 방법  하나입니다.
이벤트 스토밍(event storming) 비즈니스 프로세스와 도메인 모델을 시각화하고 이해하기 위한 협력적인 워크샵 기술로, 이벤트와 명령을 중심으로 시스템 동작을 모델링하는 방법입니다
이벤트 스트림(event streams) 시간에 따른 이벤트의 연속적인 흐름으로, 분산 시스템에서 데이터를 비동기적으로 전달하고 저장하는  사용됩니다. 이벤트 스트림은 주로 이벤트 소싱과 CQRS 패턴과 관련이있습니다.
이스티오(Istio) 서비스 메시(Microservices) 환경에서 서비스 통신, 보안, 관찰 등을 관리하기 위한 오픈소스 서비스 메시 플랫폼으로, Kubernetes 환경에서 특히 널리 사용됩니다.
인가 사용자나 시스템이 특정 자원에 대한 접근 권한을 가지고 있는지 여부를 결정하고 관리하는 과정  정책을 나타냅니다. 인가는 인증과 함께 보안을 강화하는  사용됩니다.
인그레스 리소스(ingress resources) Kubernetes에서 클러스터 내부  외부에서 서비스에 접근하고 라우팅하는  사용되는설정을 정의하는 Kubernetes 오브젝트입니다. 이를 통해 HTTP  HTTPS 트래픽을 관리하고 라우팅할  있습니다.
인바운드 어댑터(inbound adapter)  외부 시스템에서 데이터를 가져오거나 수신하여 내부 시스템에서 처리할  있는 형식으로 변환하는 소프트웨어 컴포넌트나 모듈을 나타냅니다. 이는 시스템  데이터 통합을 지원하고 외부 데이터를 내부 프로세스에 제공하는 역할을 합니다.
인바운드 포트 컴퓨터 네트워크에서 데이터가 수신되는 포트를 나타내며, 외부에서 내부 시스템으로 들어오는 데이터  요청을 받는 포트입니다.
인증 사용자 또는 시스템이 신원을 확인하고 자신이 주장하는 신원을 입증하는 과정으로, 보안 시스템에서 접근 권한을 부여하는  사용됩니다.
인증 서비스(auth service) 사용자나 시스템의 신원을 확인하고 인증하는 서비스로, 주로 로그인  접근 권한 관리에사용됩니다.
인프라 자동화 코드  자동화 도구를 사용하여 서버, 네트워크, 스토리지 등의 인프라를 프로비저닝, 관리  조작하는 프로세스를 자동화하는 것을 의미합니다.
일반 서브도메인 비즈니스 도메인에서 특별한 역할을 하지 않고 일반적인 서비스로 분리되는 부분을 나타내며, 도메인 주도 설계 원칙에 따라 마이크로서비스로 분리될  있습니다.
읽기 모델 CQRS 패턴에서 사용되며, 읽기 전용 데이터 저장소에서 데이터를 조회하고 조회용으로 최적화된 모델을 나타냅니다. 이를 통해 읽기 연산의 성능을 향상시키고 쓰기 연산과 분리할  있습니다.
자동화된 자원 배정(Automatic binpacking) 제한된 자원(: CPU, 메모리, 디스크 공간) 최대한 효율적으로 할당하고 최적화하는 자동화 알고리즘 또는 프로세스를 나타냅니다.
자율적인 분권 거버넌스 조직 내부 또는 분산된 시스템에서 각각의 구성 요소나 팀이 자체적으로 의사결정을 내리고 자유롭게 운영되는 거버넌스 형태를 나타냅니다.
저장소 분리 서로 다른 데이터 저장소를 사용하여 읽기  쓰기 작업을 분리하는 데이터 관리 패턴으로, CQRS 관련이 있습니다.
저장소 처리 어댑터 데이터를 저장소에서 읽거나 저장하는 역할을 담당하는 컴포넌트로, 데이터베이스나 파일시스템과 상호 작용하여 데이터를 처리하는 역할을 합니다.
전략적 설계(strategic design) 비즈니스 목표와 기술적 결정을 조화시켜 소프트웨어 아키텍처와 디자인을 계획하고 개발하는 과정을 나타내며, 비즈니스와 기술적 요소 간의 일치를 유지합니다.
전술적 설계(tactical design) 소프트웨어의 구체적인 모듈, 클래스, 함수 등의 디자인을 다루며, 코드의 세부 사항과 모듈 간의 상호 작용을 정의하는 과정을 나타냅니다. 이는 전략적 설계의 실행 단계로   있습니다.
정보 묶음(information holder) 데이터나 정보를 저장하고 관리하는 객체 또는 구조를 나타내며, 데이터를 캡슐화하고 해당 데이터에 접근하는 방법을 제공합니다.
정책 특정 상황이나 조건에 따라 결정을 내리거나 행동을 조절하는 규칙, 지침,  등을 나타냅니다. 이것은 보통 특정 목적을 달성하기 위한 지침이나 규칙을 의미합니다.
제어 흐름(flow of control) 프로그램 실행 중에 명령문이나 코드 블록이 어떤 순서로 실행되는지를 제어하는 것을 나타내며, 조건문, 루프, 함수 호출 등을 통해 프로그램의 실행 경로를 결정합니다.
제품 중심 비즈니스나 개발 프로세스를 제품을 중심으로 구성하고 관리하는 접근 방식을 나타냅니다. 이는 제품의 가치, 품질, 기능을 강조하며 지속적인 개선과 고객 중심 접근을 강조합니다.
주키퍼 컨테이너 Apache ZooKeeper 분산 코디네이션 서비스를 컨테이너 환경에서 실행하고 관리하는 도구 또는 이미지를 나타냅니다. 이를 통해 분산 시스템의 구성 관리  동기화에 사용됩니다.
준수자(Confirmist) 기존의 설계 패턴과 관행을 따르는 접근 방식을 채택하며 혁신보다는 안정성과 신뢰성을 우선시하는 경향을 가진 설계자를 나타냅니다.
줄(Zuul) Netflix에서 개발한 오픈 소스 게이트웨이 서비스로, 마이크로서비스 아키텍처에서 클라이언트와 백엔드 서비스 간의 라우팅, 로드 밸런싱, 보안, 모니터링 등을 관리하는데 사용됩니다.
중앙 집중식 세션 관리 사용자 세션 데이터를 중앙 서버에 저장하고 관리하는 방식으로, 여러 서비스나 서버 간에세션 상태를 공유할  있게 해주는 기술입니다.
지속적 배포(Continuous Deployment) 소프트웨어 변경 사항을 자동화된 프로세스를 통해 지속적으로 프로덕션 환경에 배포하는방식으로, 품질 테스트와 자동화된 배포 파이프라인을 활용하여 빠르게 새로운 기능과 업데이트를 고객에게 제공합니다.
지속적인 계획(continuous planning) 소프트웨어 개발  프로젝트 관리 과정에서 지속적으로 계획을 업데이트하고 조정하는 접근 방식을 나타냅니다. 변경된 상황과 피드백에 따라 계획을 유연하게 조정하여 프로젝트 목표를 달성하는  도움을 줍니다.
지속적 제공(Continuous Delivery) 소프트웨어를 개발하는 프로세스를 자동화하고, 품질 테스트와 배포 프로세스를 지속적으로 실행하여 소프트웨어 변경 사항을 언제든지 프로덕션 환경으로 안정적으로 제공할  있는 개발  운영 방법론입니다.
지속적 통합(Continuous Integration) 개발자들이 작성한 코드 조각을 자동으로 빌드하고 테스트하여 일상적으로 통합하는 개발프로세스를 나타냅니다. 이를 통해 개발자들은 코드 변경 사항이 프로젝트 전체에 영향을 미치는지 빠르게 확인할  있습니다.
지원 서브도메인 주요 비즈니스 도메인을 지원하고 보완하기 위한 보조적인 서브도메인으로, 주로 공통된 기능이나 서비스를 제공하거나 비즈니스 프로세스를 지원하는 역할을 합니다.
집킨(Zipkin) 분산 시스템에서의 디버깅  성능 모니터링을 위한 오픈 소스 분산 추적 시스템으로, 서비스 간의 요청  응답을 추적하고 시각화하여 문제 해결  최적화에 도움을 줍니다.
책임 객체 지향 프로그래밍에서 객체가 수행해야 하는 특정 작업 또는 역할을 나타내며, 객체의행동과 상태를 결정하는 중요한 개념입니다.
추적 서비스 분산 시스템에서 요청의 전체 수명 주기를 추적하고  구성 요소 간의 상호 작용을 모니터링하는  사용되는 도구 또는 서비스를 나타냅니다. 이를 통해 성능 문제 해결  디버깅이 용이해집니다.
충돌 방지 계층(ACL; Anti-Corruption Layer) 서로 다른 소프트웨어 시스템 간에 데이터  통신 인터페이스의 호환성을 유지하기 위한 중간 계층으로, 외부 시스템과 상호 작용하는 동안 데이터 변환  적응을 수행하여 데이터 호환성을 보장합니다.
카오스 몽키(chaos monkey)  Netflix에서 개발한 오픈 소스 도구로, 분산 시스템의 내구성과 견고성을 테스트하기 위해 무작위로 시스템에서 서버 인스턴스를 종료하는 자동화된 도구입니다.
커맨드(Command) 특정 작업이나 액션을 나타내는 객체로, 실행해야 하는 작업과 관련된 정보와 로직을 캡슐화한 패턴입니다. 주로 명령 패턴(Command Pattern) 함께 사용되며, 작업을 객체로 캡슐화하여 실행, 취소, 큐에 저장 등의 작업을 지원합니다.
컨슈머(Consumer) 메시지 또는 데이터를 소비하고 처리하는 역할을 하는 주체로, 일반적으로 메시지 큐나 데이터 스트림과 같은 통신 시스템에서 사용됩니다.
컨테이너 레지스트리 등록 컨테이너 이미지를 중앙 저장소 또는 레지스트리에 업로드하고 관리하여 컨테이너 오케스트레이션 시스템이 이를 배포하고 실행할  있게 하는 프로세스입니다.
컨테이너 오케스트레이션 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장하고 관련 서비스를 조율하는 컨테이너 관리 시스템의 자동화 기술입니다.
컨테이너 이미지 컨테이너화된 애플리케이션을 실행하는  필요한 모든 소프트웨어와 종속성을 포함하고 있는 패키지입니다.
컨테이너화 애플리케이션과  종속성을 격리된 환경에 패키징하여 이식성과 확장성을 향상시키는 기술로, 가상화 기술을 기반으로 독립적인 실행 단위로 만드는 프로세스입니다.
컨텍스트 매핑 서로 다른 소프트웨어 시스템 간에 데이터와 통신 인터페이스를 변환하거나 매핑하여 상호 연동성을 확보하는 프로세스 또는 기술입니다.
컨텍스트 맵(context map) 도메인 주도 설계(DDD)에서 사용되는 도메인  상호 작용과 경계를 시각적으로 나타내는 다이어그램으로, 마이크로서비스 아키텍처에서  서비스 간의 관계를 표현합니다.
컨트롤 플레인(Control Plain) 네트워크나 클라우드 시스템과 같은 인프라를 관리하고 제어하기 위한 소프트웨어  프로세스의 집합을 나타냅니다.
콘웨이 법칙(Conway's law) 조직의 커뮤니케이션 구조와  조직이 생산하는 소프트웨어 아키텍처 간의 상관 관계를 나타내는 법칙으로, 조직의 통신 구조가 그들이 개발하는 시스템의 구조에 영향을 미친다는 원칙을 제시합니다.
쿠버네티스 컨테이너 오케스트레이션  관리 플랫폼으로, 분산 애플리케이션을 쉽게 배포, 확장, 관리하기 위한 오픈 소스 도구입니다.
쿠버네티스 서비스(Kubernetes Service) 클라우드 제공 업체가 관리하는 쿠버네티스 클러스터를 제공하는 서비스로, 사용자는 쿠버네티스를 쉽게 배포하고 관리할  있습니다.
쿠버네티스 오브젝트 쿠버네티스 클러스터 내에서 관리되는 리소스와 설정을 표현하는 YAML 또는 JSON 형식의 파일로, 파드, 서비스, 노드  다양한 시스템 구성 요소를 정의합니다.
쿠버네티스 컨피그맵(ConfigMap) 애플리케이션 설정 정보를 분리하고 관리하기 위한 오브젝트로, 컨테이너화된 애플리케이션에서 환경 변수, 설정 파일 등을 관리하는  사용됩니다.
쿠버네티스 클러스터 여러 대의 컴퓨터 노드로 구성된 컨테이너 오케스트레이션 환경으로, 컨테이너화된 애플리케이션을 관리하고 실행하는  사용됩니다.
쿼리 메서드 데이터베이스에서 특정 조건에 따라 데이터를 검색하기 위한 메서드로, 주로 객체지향 프로그래밍과 데이터베이스 연동을 간편하게 처리하기 위해 사용됩니다. Spring Data JPA 같은 프레임워크에서 자주 활용됩니다.
클라우드 네이티브 애플리케이션 클라우드 환경에서 설계, 개발  운영되며, 확장성, 가용성, 유연성을 갖춘 모던한 애플리케이션입니다.
클라우드 네이티브 지형도  클라우드 네이티브 생태계의 다양한 기술과 프로젝트를 시각적으로 나타낸 다이어그램으로, 클라우드 네이티브 애플리케이션 개발과 관련된 기술 스택을 보여줍니다.
클라우드 네이티브 컴퓨팅 재단(CNCF) 클라우드 네이티브 컴퓨팅의 채택과 발전을 촉진하는 오픈 소스 커뮤니티와 프로젝트를 지원하는 비영리 단체로, 쿠버네티스와 같은 클라우드 네이티브 기술의 개발과 보급을 촉진합니다.
클라우드 인프라 가상화  분산 컴퓨팅 기술을 기반으로 클라우드 서비스를 제공하기 위한 하드웨어  소프트웨어 자원의 집합으로, 사용자에게 서버, 스토리지, 네트워크 등의 리소스를 제공합니다.
클라우드 친화 애플리케이션 클라우드 환경에서 최적화된 형태로 설계되고 개발된 애플리케이션으로, 클라우드의 확장성, 가용성, 자동화 기능을 활용하여 운영됩니다.
클라우드 파운드리(Cloud Foundry) 애플리케이션을 쉽게 배포하고 관리할  있도록 도와주는 오픈 소스 PaaS(Platform as a Service) 플랫폼으로, 다양한 클라우드 환경에서 애플리케이션을 실행할  있습니다.
클라이언트 토큰 클라이언트 애플리케이션이 인증  권한 부여를 위해 서버 또는 인증 서비스로부터 발급받는 보안 토큰으로, 주로 API 접근 권한을 확인하는  사용됩니다.
클래스 명명 규칙 프로그래밍 언어에서 클래스 이름을 정하는 규칙으로, 일반적으로 카멜 케이스(CamelCase) 또는 파스칼 케이스(PascalCase) 같은 형식을 따르며, 클래스의 목적과 역할을 나타내도록 작성됩니다.
클린 마이크로서비스 마이크로서비스 아키텍처를 구현하면서 코드, 디자인, 아키텍처 등의 측면에서 깨끗하고 유지보수 가능한 소프트웨어를 개발하는  중점을  접근 방식을 말합니다.
클린 아키텍처(clean architecture) 소프트웨어 시스템을 레이어로 구성하고,  레이어 간의 의존성을 최소화하여 유지보수 가능하고 테스트 가능한 아키텍처를 만들기 위한 설계 원칙과 패턴의 집합입니다.
키바나(kibana) Elasticsearch 함께 사용되는 오픈 소스 데이터 시각화  대시보드 툴로, 로그  시계열 데이터를 시각적으로 탐색하고 모니터링하는  사용됩니다.
탄력성(Resilient) 시스템이 예상치 못한 오류나 장애에도 계속해서 정상적으로 작동하고 회복할  있는 능력을 의미합니다.
트랜잭션 스크립트(Transaction script) 소프트웨어 디자인 패턴으로, 간단한 트랜잭션 로직이 순차적으로 실행되는 방식으로 구현되는 패턴으로, 복잡한 비즈니스 로직을 처리하는  사용됩니다.
파드(Pod) 쿠버네티스에서 실행 단위로, 하나 이상의 컨테이너를 포함하며 공유 네트워크와 스토리지를 가지고 있는 추상화된 개념입니다.
패키지 구조 소프트웨어 프로젝트에서 코드  자원을 조직화하는 방식을 나타내며, 일반적으로 계층적이고 모듈화된 구조로 구성됩니다.
퍼블릭 클라우드 다수의 고객이 공유하는 인터넷 기반의 클라우드 컴퓨팅 리소스와 서비스를 제공하는 클라우드 플랫폼입니다.
퍼실리테이터(facilitator) 그룹 토의나 회의를 원활하게 진행하기 위해 참석자들을 지원하고 도와주는 역할을 하는 사람을 가리킵니다.
페인 REST 기반 동기 서비스 호출을 추상화한 Spring Cloud Netflix 라이브러리
포트 앤드 어댑터 아키텍처 소프트웨어 컴포넌트와 외부 시스템 간의 상호작용을 추상화하고 분리하는 디자인 패턴으로, 내부 포트와 외부 어댑터로 구성됩니다.  패턴은 시스템을 확장하고 테스트하며 유지보수하기 쉽게 만듭니다.
폴리글랏  다양한 언어, 프레임워크 또는 기술을 혼합하여 사용하는 접근 방식을 가리킵니다. 특히, 소프트웨어 시스템 내에서 다른 프로그래밍 언어나 기술을 선택하는 것을 의미합니다.
폴리글랏 저장소(polyglot persistence) 데이터베이스 시스템을 선택할 ,  데이터 유형 또는 요구 사항에 맞게 다른 데이터 저장 기술을 혼합하여 사용하는 데이터 관리 전략을 의미합니다.
폴백(fallback) 메서드 주로 오류 처리 시에 사용되며, 기본 작업 또는 기능에 대한 대체 동작을 정의한 메서드를 가리킵니다.  메서드는 일반적으로 예외 발생 또는 다른 문제가 발생했을  호출되어 시스템의 안정성을 유지하거나 예상치 못한 문제에 대처합니다.
표준 타입 프로그래밍 언어나 플랫폼에서 기본적으로 제공되는 데이터 유형 또는 자료형을 가리킵니다. 이러한 타입은 일반적으로 정수, 부동소수점 숫자, 문자, 논리값 등과 같은 기본 데이터 유형을 포함하며, 개발자가 다양한 데이터를 다룰  사용됩니다.
프라이빗 클라우드 환경  조직이나 엔터프라이즈에 속한 전용 서버  인프라를 사용하여 클라우드 기반 IT 리소스를 운영하고 관리하는 환경을 가리킵니다. 이는 공용 클라우드와는 달리 외부 사용자와 공유되지 않고 내부 사용자나 파트너에게 제한적으로 제공됩니다.
프런트 아키텍처 정의  애플리케이션 또는 소프트웨어의 사용자 인터페이스  클라이언트  구성을 설계하고 구축하는 방법과 패턴을 정의하는 것입니다.
프레젠테이션(Presentation) 사용자 인터페이스(UI)  클라이언트  렌더링을 담당하며,  마이크로서비스가 제공하는 데이터와 기능을 효과적으로 표현하고 사용자와 상호작용하는 역할을 합니다.
하류(downstream) 소비하는 컨텍스트
하이퍼바이저(hypervisor) 컴퓨터 하드웨어에서 가상화를 관리하고 여러 개의 가상 머신(VM) 실행하는 소프트웨어 레이어로, 서버 가상화  리소스 분배를 지원합니다.
핫스폿 자바 가상 머신(JVM)에서 코드 실행  자주 사용되는 부분을 최적화하여  빠른 실행을가능하게 하는 기술로, 성능 향상을 위해 사용됩니다.
핵심 서브도메인 주요 비즈니스 영역 내에서 핵심 업무와 관련된 주요 도메인 객체와 로직을 포함하는 서브도메인을 가리킵니다. 이러한 핵심 서브도메인은 전체 비즈니스 영역에서 핵심 역할을 합니다.
헥사고날 아키텍처 소프트웨어 시스템을 깨끗하고 모듈화된 구조로 설계하기 위한 아키텍처 패턴으로, 내부와 외부 영역을 명확히 구분하여 의존성을 관리하고 변경 용이성을 증가시킵니다.
회고 팀원들이 자기 스스로를 돌아보는 과정
히스트릭스 대시보드(Hystrix Dashboard) Netflix Hystrix 라이브러리를 사용하여 마이크로서비스의 회로 차단 동작  성능 데이터를 모니터링하고 시각적으로 표시하는 대시보드입니다.
히스트릭스 회로 차단  실패 처리 메커니즘을 제공하여 분산 시스템에서의 장애와 지연을 처리하는  도움을 주는 라이브러리입니다. Netflix에서 개발되었으며 마이크로서비스 아키텍처에서 주로 사용됩니다.

'책 소개' 카테고리의 다른 글

오펜하이머 각본집  (1) 2023.10.29
북유럽 신화  (0) 2023.10.21
습관의 힘  (2) 2023.10.08
심플 소프트웨어  (2) 2023.10.08
클린코드  (0) 2023.10.08