SpringBoot 로 RestAPI 를 개발하다 보면, 클라이언트에 일관된 에러 응답을 제공하기 위해 예외처리의 표준화가 필요합니다. 이를 효율적으로 관리하기 위해 RestErrorAdvice 를 설정하면 각종 예외를 깔끔하게 처리할 수 있습니다. 이번 포스팅에선 RestErrorAdvice 를 설정하는 방법에 대해 소개하겠습니다. 1. Dependency 추가dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-web' ...}gradle 또는 maven 에 Dependency 를 추가합니다. 2. 공통 에러 응답 포맷 정의@Getter@Setter@NoArgsConstructorpublic class Ba..

현대적인 MSA 환경에서는 시스템 상태를 모니터링하고 성능을 시각화하는 것이 필수적입니다. Prometheus와 Grafana는 이러한 요구를 충족시키는 강력한 오픈소스 도구로, Kong API Gateway와의 연동을 통해 효율적인 모니터링 환경을 구축할 수 있습니다. 이 글에서는 Kong을 중심으로 Prometheus와 Grafana를 연동하여 API 트래픽 및 시스템 상태를 한눈에 파악하는 방법을 안내합니다. 1. 프로메테우스 설정# 디렉터리 구조prometheus│ docker-compose.yml│ prometheus.yml└─ data/1.1. docker-compose.yml 작성version: '3.8'services: prometheus: image: prom/prometheu..

마이크로서비스 아키텍처(MSA) 를 운영하며 API 관리할 때, Kong Gateway 는 확장성과 성능을 겸비한 API 게이트웨이로, 인증, 라우팅, 모니터링을 손쉽게 처리할 수 있습니다. 이 글에서는 Kong Gateway 의 주요 특징과 설정 방법을 간단히 소개합니다.주요 특징API 라우팅 및 관리: 다양한 서비스로의 요청 라우팅, 로드 밸런싱, 인증/인가 등 API 관리를 통합적으로 제공합니다.확장성과 플러그인 시스템: 플러그인을 통해 인증(JWT, OAuth2), 요청 제한, 로깅 등 기능을 쉽게 확장할 수 있습니다.다양한 배포 옵션: Kubernetes, Docker, VM 등 다양한 환경에 배포 가능하며, MSA와 클라우드 네이티브 아키텍처에 최적화되어 있습니다.설치 방법Docker 와 Do..
SpringBoot 애플리케이션을 Undertow 기반으로 실행하고 Docker로 배포하는 방법을 단계별로 정리했습니다. 이 가이드를 따라 하면 간단히 Docker 컨테이너 환경에서 애플리케이션을 실행할 수 있습니다. 1. 프로젝트 설정1.1. Gradle 설정build.gradle 파일에서 Undertow 및 Docker 빌드를 위한 플러그인을 설정합니다.# build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.4.0' id 'io.spring.dependency-management' version '1.1.6'}dependencies { implementation 'org.springframework.boot:sprin..

Vue3 (TypeScript 기반) 프로젝트를 Docker로 배포하는 방법을 간단히 정리했습니다. 이 가이드를 따라 하면 쉽게 Vue 애플리케이션을 Docker 기반으로 배포할 수 있습니다. 1. 프로젝트 구조project-root/├── src/ # Vue 소스 파일 (컴포넌트, 페이지 등)│ ├── assets/ # 정적 파일 (이미지, 폰트 등)│ ├── components/ # Vue 컴포넌트│ ├── views/ # Vue 페이지│ └── main.ts # Vue 진입 파일│├── public/ # 정적 파일 (index.html 포함)│..

SpringBoot 에서 JPA 와 GraphQL 을 연동하는 방법에 대해 간략히 소개하겠습니다. 해당 포스팅에선 PostgeSQL 을 사용하였습니다. 1. 의존성 추가// GraphQLimplementation 'org.springframework.boot:spring-boot-starter-graphql'implementation 'com.graphql-java-kickstart:graphql-spring-boot-starter:15.1.0'// PostgreSQLruntimeOnly 'org.postgresql:postgresql'// JPAimplementation 'org.springframework.boot:spring-boot-starter-data-jpa'GraphQL, PostgreSQL..
GPT의 프롬프트 엔지니어링은 대규모 언어 모델이 사용자의 의도를 정확히 이해하고 필요한 결과를 생성할 수 있도록 효율적인 요청을 설계하는 기술입니다. GPT 모델은 제공된 입력(프롬프트)을 기반으로 응답을 생성하므로, 프롬프트의 품질이 결과의 품질에 직접적인 영향을 미칩니다.GPT는 특정 목적이나 컨텍스트에 맞는 다양한 형식의 결과를 생성할 수 있어, 프롬프트 엔지니어링은 이를 최대한 활용하기 위한 중요한 도구입니다. 1. 주요 원칙명확하고 구체적으로 작성: 불필요한 모호성을 제거하고, 원하는 정보를 구체적으로 요청역할과 컨텍스트 정의: GPT가 특정 역할(예:번역가, 개발자, 작가 등)을 수행하도록 설정예제 포함: 원하는 출력 형식을 보여주는 예제를 제공단계적 접근: 복잡한 문제를 작은 단계로 나눠 ..

PostgreSQL 은 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 안정성과 기능성 면에서 업계 표준으로 자리 잡았습니다. PostgreSQL 의 주요 특징과 설치방법에 대해 알아보겠습니다. 1. PostgreSQL 특징 ACID 준수: PostgreSQL은 트랜잭션의 원자성, 일관성, 격리성, 지속성을 보장하는 ACID 규칙을 준수하여 안정적인 데이터 관리가 가능합니다.확장성과 유연성: 사용자 정의 데이터 타입, 함수, 연산자 등을 추가할 수 있어 매우 유연하며, JSON 및 JSONB 같은 다양한 데이터 형식을 지원합니다.고급 기능과 성능: 복잡한 쿼리 처리, 병렬 쿼리 처리, 다양한 인덱싱 방식, MVCC(다중 버전 동시성 제어) 등을 통해 성능과 효율성을 높일 수 있습니다. 2. P..
Git 과 SVN(Subversion)은 모두 버전 관리 시스템이지만, 두 시스템의 설계 철학과 동작 방식에는 큰 차이가 있습니다. Git과 SVN의 주요 차이점에 대해 알아보겠습니다. 1. 저장소 구조Git (분산 버전 관리 시스템, DVCS)모든 사용자가 로컬 저장소를 가지고 있습니다.로컬 저장소에는 전체 프로젝트의 히스토리가 저장됩니다.네트워크 연결이 없어도 로컬에서 작업이 가능합니다.SVN (중앙 집중식 버전 관리 시스템, CVCS)중앙 저장소(서버)에 모든 데이터가 저장됩니다.작업 시 네트워크 연결이 필수이며, 작업 결과를 서버에 반영하려면 커밋을 수행해야 합니다. 2. 브랜칭 및 병합Git브랜치 생성 및 병합이 가볍고 빠릅니다.브랜치는 로컬에서 자유롭게 생성 가능하며, 중앙 저장소와 독립적으로..
스프링 AOP(Aspect-Oriented Programming)는 핵심 비즈니스 로직에 영향을 주지 않고 공통적인 관심사를 처리하는 데 사용됩니다. AOP를 활용하면 코드 중복을 줄이고 유지보수를 용이하게 만들 수 있습니다. AOP의 주요 사용처 1. 로깅애플리케이션의 메서드 호출, 매개변수, 반환값, 실행 시간 등을 기록개발 중 디버깅 및 운영 중 문제 분석에 유용@Aspect@Componentpublic class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logBefore(JoinPoint joinPoint) { System.out.println("Method called: ..
- Total
- Today
- Yesterday