컴퓨터 프로그래밍/CS 15

Feign Client 를 만든 Netflix

✔️ Feign Client 란?Feign Client 는 HTTP 요청을 인터페이스만으로 처리를 할 수 있게 도와주는 클라이언트이다.Spring Cloud 에서 제공하는 @FeignClient 어노테이션을 이용해서 메서드 호출처럼 외부 API 나 다른 마이크로서비스를 쉽게 호출할 수 있게 한다. ✔️ 넷플릭스는 왜 Feign Client 를 만들었을까?넷플릭스는 전 세계 수억 명에게 서비스를 제공하면서, 초대형 마이크로서비스 아키텍처로 전환했다.서비스 간의 수많은 HTTP 통신을 안정적이고 효율적으로 처리해야 했고, 이 과정에서 문제들을 겪는다.  HTTP 요청 코드가 너무 많고 반복적이다.실패 처리(fallback)나 로드밸런싱을 일일이 다 구현해야 한다.코드가 복잡해서 유지보수가 힘들다.그래서 간결..

RabbitMQ vs Kafka 과 알림 서버 분리에 따른 메세지 큐 반영 고민

📚 RabbitMQ특징프로토콜: AMQP (표준 메시징 프로토콜 지원)메시지 전달: Push 모델 기반. 브로커가 소비자에게 메시지를 적극적으로 전달.큐 중심 설계: 메시지가 큐에 저장되고, 소비자가 이를 처리하는 전통적인 방식. 메시지 삭제는 소비자가 처리 후 ACK(확인 응답)를 보내면 이루어짐.라우팅: Exchange를 통해 Direct, Topic, Fanout, Headers 방식으로 유연하게 메시지 라우팅 가능.구성: 단일 노드에서 동작 가능하며, 클러스터링 지원은 있지만 Kafka만큼 분산 시스템에 특화되지 않음. 메시지 보장: 메시지 확인 및 재전송 메커니즘으로 높은 신뢰성 제공한다.사용 사례작업 큐 관리: 예를 들어, 사용자 등록 후 환영 이메일 전송, 이미지 변환 작업 등 비동기 작업..

[CS] Hexagonal Architecture

✅  3-Layer Architecture & Hexagonal Architecture더보기1. 3계층 아키텍처 (3-Layer Architecture)🏗 구조3계층 아키텍처는 애플리케이션을 세 개의 논리적 계층으로 나누는 전통적인 설계 방식입니다.Presentation Layer (UI Layer)사용자 인터페이스 담당 (웹, 모바일, API 컨트롤러 등)HTTP 요청을 받아 비즈니스 로직을 호출하고, 응답을 반환Business Layer (Service Layer)핵심 비즈니스 로직 담당데이터 처리 및 도메인 규칙 적용Data Access Layer (Repository Layer)데이터베이스 및 외부 저장소와의 상호작용ORM (JPA, MyBatis 등) 또는 직접 SQL 쿼리를 사용✅ 장점이해하..

[CS] CI/CD 파이프라인 구축을 위한 이해

1. CI/CD 는 세 단계를 가진다. 개발, 빌드, 배포각 단계는 하나의 서버 개념이다.2. Jar 파일 빌드 시점에 대한 고민 .jar 파일을 빌드해야하기 때문에 이 과정을 개발 단계에서 포함해서 가져가냐, 빌드 단계에서 가져가냐의 차이는 있다. 빌드 단계에서 .jar 파일을 빌드하게 해놓는다면 Github Actions, Jenkins 등 툴에 따라서 환경을 맞춰줘야한다.이렇게 하면 이미지가 가벼워진다. 개발단계에서 이미지를 만들고 도커파일 자체에서 jdk, gradle 를 정의하고 가져온다면 build 를 어떤 툴로 하든 가능해진다. but, 이미지가 무거워진다는 단점이 있다.  사실상 이렇게 만든 .jar 파일을 배포하면 끝이다.3. 서버 확장 시 생길 수 있는 문제 하지만 나중에 EC2 서버를..