들어가기MSA(Microservice Architecture) 환경에서는 서비스가 여러 개로 나뉘어 운영되기 때문에, 각 서비스마다 개별적인 Swagger 문서를 가지게 된다. 마이크로서비스 수가 많아지면 Swagger 문서 역시 분산되면서 관리가 어려워진다. 이로 인해 전체 API를 한눈에 파악하기 어렵고, 프론트엔드 개발자 입장에서도 여러 URL을 오가며 API를 확인해야 하는 불편함이 발생한다. 이러한 문제를 해결하기 위해, API Gateway를 활용하여 Swagger 문서를 하나의 진입점에서 통합 관리하는 방법을 적용해보았다.Spring Cloud Gateway를 통해 각 마이크로서비스의 Swagger 문서를 라우팅하고, 하나의 Swagger UI에서 선택적으로 확인할 수 있도록 구성할 수 있다..
전체 글
코딩하는 고냥이Sealed 클래스란?클래스 상속을 제한하는 기능으로, Java 15에서 Preview로 도입되었고, Java 17부터 정식 기능으로 제공되었다. (봉인된 클래스)이 클래스를 상속할 수 있는 하위 클래스의 목록을 명시적으로 지정(제한)한다.적용 대상 : 클래스 / 추상 클래스 / 인터페이스 모두 가능record는 sealed 타입의 하위 타입으로 사용할 수 있다. 예시public sealed interface Animals permits Cat, Dog, Fox {} Animals를 구현(상속)할 수 있는 클래스는 Cat, Dog, Fox 이 세 가지뿐! Sealed 클래스의 필요성1. 기존 상속 제어 방식을 개선하기 위함기존에 Java는 final로 상속을 완전 제한하거나, abstract..
✔️ HTTP 통신 구조의 한계HTTP는 요청-응답(Request-Response) 단방향 통신 구조로, 클라이언트가 요청해야만 서버가 응답하는 구조이다.각 요청은 독립적으로 실행되기 때문에, 매번 연결을 맺고 끊는 과정이 반복되어 비효율적이다.실시간 통신을 위해서 계속 서버에 요청(폴링)해야 된다.폴링의 문제점불필요한 요청이 많다. (트래픽 낭비)요청 주기가 길면 데이터가 늦게 전달된다.롱폴링의 한계클라이언트의 요청을 서버가 오랫동안 유지해야 하므로, 동시 접속자가 많을수록 서버 부담이 커진다. 더보기💡 폴링(Polling)이란?- HTTP가 실시간 통신인 것처럼하기 위해 클라이언트가 주기적으로 서버에 요청을 보내는 방식이다.- 서버는 이벤트 발생이 없더라도 요청에 대해 응답해야 된다. 💡 롱폴링..
Amazon ECSAmazon ECS(Elastic Container Service)는 AWS에서 제공하는 완전 관리형(Fully Managed) 컨테이너 오케스트레이션 서비스로, 컨테이너 기반 애플리케이션을 쉽게 배포, 관리, 확장할 수 있도록 도와준다.컨테이너 실행/종료 외에도 로드 밸런싱, 클러스터링, 장애 복구, 스케줄링 등의 기능을 제공한다. 더보기💡 완전 관리형(Fully Managed)이란?- 사용자가 서버, 네트워크, OS 등 인프라를 직접 관리하지 않고, 서비스 제공자(AWS)가 대신 관리해주는 것을 의미한다.- 인프라 관리 부담 없이 애플리케이션 실행에 집중할 수 있다. 💡 컨테이너 오케스트레이션(Container Orchestration)이란?- 컨테이너의 배포, 확장, 네트워..
들어가기Git에는 수많은 명령어가 존재한다.이번 포스팅에서는 자주 사용되거나, 알아두면 좋은 명령어들을 정리해보려고 한다. 📁 관련 포스팅[Git] 형상 관리(Configuration Management)란?[Git] Git이란? Git의 3가지 영역과 동작 과정 Git 설정 관련 명령어git init현재 경로를 Git으로 버전 관리하겠다고 명시하는 명령어가장 기본적인 명령어로, init 명령어를 실행하면 해당 경로에 `.git` 디렉터리가 생성되면서 Git의 관리 대상이 된다.Git을 사용하기 위해 가장 먼저 실행해야 한다. git clone원격 저장소(Ex. Github, Bitbucket)에 있는 파일을 로컬로 복제(clone)하는 명령어Github과 같은 원격 저장소에 올라간 파일을 ..
스프링 배치 (Spring Batch)Batch의 사전적 의미는 "일괄 처리"로, 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단 없이 처리하는 것을 의미한다.스프링 배치(Spring Batch)는 Spring 환경에서 대용량 데이터를 일괄 처리할 수 있도록 지원하는 프레임워크로, 정해진 로직에 따라 일련의 작업을 수행하는 기능을 제공한다. 더보기Batch는 Scheduler인가?Batch와 Scheduler는 모두 자동화 작업을 수행하기 때문에 혼동하기 쉽다.하지만, Batch는 대용량 데이터를 일괄 처리하는 데 초점을 맞추고, Scheduler는 특정 시간 또는 주기적으로 로직을 실행하는 역할을 수행하기 때문에 Batch와 Scheduler는 별개의 기능이다.즉, 스케줄러를 사..