최근 수정 시각 : 2026-01-02 06:21:29

마이크로서비스 아키텍처

MSA에서 넘어옴

[[컴퓨터공학|'''컴퓨터 과학 및 공학
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<bgcolor=#1282d7,#1282d7> 기반 학문 수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(음운론 · 형태론 · 통사론 · 의미론 · 화용론) · 인지과학
하드웨어 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · 바이오스 · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · LinuxBoot · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구 및 기타 논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영체제(멀티태스킹 · 프로세스 스케줄링 · 데드락 · 식사하는 철학자 문제 · 뮤텍스 · 세마포어 · 인터럽트) · 데이터베이스 · 컴퓨터 언어 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 어휘 분석 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 마크업 언어 · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크(네트워크 포트) · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템) · 난수생성 · 놀람 최소화 원칙 · 프레임워크 · 라이브러리 · 모듈 · API · ABI · 이진 탐색
}}}}}}}}} ||
SWEBOK(소프트웨어 공학 지식 체계)
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px); word-break: keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-5px -1px -11px"
<colbgcolor=#009000><colcolor=#fff> 개발 생애주기 소프트웨어 요구사항 · 소프트웨어 아키텍처 · 소프트웨어 설계 · 소프트웨어 구현 · 소프트웨어 테스트 · 소프트웨어 운영 · 소프트웨어 유지보수
지원·관리 소프트웨어 형상 관리 · 소프트웨어 공학 관리 · 소프트웨어 공학 프로세스 · 소프트웨어 공학 모델 및 기법 · 소프트웨어 품질 · 소프트웨어 보안
전문성·경제성 소프트웨어 공학 전문 실무 · 소프트웨어 공학 경제성
기초 컴퓨팅 기초 · 수학적 기초 · 공학적 기초
}}}}}}}}} ||
1. 개요2. 장점3. 단점

1. 개요

서비스 지향 아키텍처 (SOA)의 하위 집합으로, 작고 독립적인 서비스들을 조합하여 애플리케이션을 구성하는 아키텍처 스타일.

각 서비스는 특정 업무를 수행하며, 특정 프로토콜(예: HTTP)을 사용하여 통신한다. 이러한 서비스들은 각각 자체적인 데이터베이스와 배포를 가지며, 서로 다른 프로그래밍 언어, 프레임워크, 데이터베이스 등을 사용할 수 있다.

2. 장점

  • 확장성 : 필요한 서비스만 확장할 수 있으므로, 전체 시스템의 확장성이 높아집니다.
  • 유연성 : 각 서비스는 서로 분리되어 있으므로, 기존 서비스를 수정하지 않고 새로운 기능을 추가하거나 제거할 수 있습니다.
  • 안정성 : 각 서비스는 독립적으로 배포되므로, 서비스의 장애가 전체 시스템에 영향을 끼치는 것을 방지할 수 있습니다.
  • 기술적 다양성: 각 서비스는 다른 기술 스택을 사용할 수 있으므로, 최적의 기술을 선택할 수 있습니다.

3. 단점

  • 복잡성: 각 서비스는 독립적으로 동작해야 하다보니 서비스 간 통신, 데이터 일관성, 보안 등에 대한 복잡한 문제 발생 방지가 필요하다.
  • 테스트: 각 서비스는 독립적으로 동작해야 하다보니 통합 테스트 시 난이도가 증가한다.
  • 운영 복잡성: 각 서비스는 독립적으로 배포되다보닌 운영의 복잡성이 증가한다.