API (Application Programming Interface)
애플리케이션 컴포넌트 간의 통신을 가능하게 하는
인터페이스이다
RESTful API, GraphQL, gRPC와 같은 다양한 방식이 존재한다
- RESTful API란 :
HTTP 프로토콜을 기반으로 자원을 정의하고 조작하는 데 초점을 둔 API 설계 방식이다
자원(리소스)을 URL로 나타내며, HTTP 메서드(GET, POST, PUT, DELETE 등)를 통해
작업을 수행한다.
RESTful API는 분산 시스템 아키텍처나 마이크로서비스 아키텍처에서
서비스 간 데이터 교환 방식으로 자주 사용된다.
마이크로서비스 아키텍처에서 서비스 간 통신을 위해 API가 필수적이앋
클라이언트-서버 아키텍처에서도 클라이언트와 서버가 데이터를 주고 받는데
API가 사용된다.
MVC (Model-View-Controller)
애플리케이션을 세 가지 주요 구성 요소로 나누는 설계 패턴:
- Model: 데이터와 비즈니스 로직.
- View: 사용자 인터페이스.
- Controller: 사용자의 요청을 처리하고 응답을 반환.
MVC는 소프트웨어 아키텍처 패턴 중 하나로,
애플리케이션 내부의 구조를 정의한다.
웹 애플리케이션 아키텍처에서 클라이언트-서버 간 역할 분리를 강조하는 기본 패턴이먀
spring framework와 같은 주요 웹 프레임워크는 MVC 패턴을 기반으로 설계가 되어있다.
Monolith (모놀리식)
- 설명:
- 모든 기능이 하나의 애플리케이션으로 통합된 아키텍처 스타일.
- 애플리케이션의 모든 부분이 단일 코드베이스에 포함.
- 아키텍처와의 관계:
- 초기 단계 프로젝트나 작은 애플리케이션에 적합한 기본 아키텍처.
- 마이크로서비스 아키텍처와 대조되는 개념으로, 필요에 따라 모놀리식 애플리케이션을 마이크로서비스로 리팩토링
Microservices (마이크로서비스) :
애플리케이션을 독립적으로 배포 및 확장 가능한 작은 서비스들로 나누는 구조이다
각 서비스는 특정 비즈니스 기능을 담당하며, 독립적으로 배포되고 관리가 된다.
마이크로 서비스는 자체적으로 아키텍처 스타일로 인정된다
Load Balancer
- 설명:
- 네트워크 트래픽을 여러 서버에 분산하여 시스템 안정성과 성능을 유지.
- 아키텍처와의 관계:
- 분산 시스템과 마이크로서비스 아키텍처에서 필수적인 구성 요소.
- 서버 간 부하를 분산하여 확장성과 고가용성을 보장.
- 웹 아키텍처에서 클라이언트 요청을 적절히 분산시키는 중요한 역할.