분류 전체보기47 Java 로그 JUL SLF4J Logback 개발을 하다 보면 반드시 마주치게 되는 것이 로그다.에러의 원인을 추적할 때, 성능 병목을 진단할 때,혹은 보안·감사 목적의 이력을 남길 때 로그는 거의 유일한 단서가 된다.콘솔에 출력하든 파일에 남기든, 혹은 외부 시스템으로 전송하든“무엇을 언제 어떻게 기록할 것인가”는 모든 서버 개발에서 공통적인 고민이다.Java 역시 오래전부터 로깅을 지원해왔고,시간이 지나며 여러 방식과 라이브러리가 등장했다.이 글에서는 Java에서 로그가 어떻게 발전해왔는지,왜 지금의 구조가 되었는지,그리고 실무에서 어떤 선택을 하는 것이 합리적인지핵심만 정리한다.Java 로그 JUL(java.util.logging)Java에는 표준 라이브러리로 제공되는 로깅 기능이 있다.바로 java.util.logging, 흔히 JUL이라 .. 2026. 2. 20. gRPC의 개념부터 Proto 정의, Streaming 방식, Stub 종류까지 서버 간 통신 서버와 서버가 통신할 때 가장 많이 사용하는 방식은 HTTP 기반 REST API이다. 하지만 서비스가 늘어나고 내부 통신이 복잡해질수록 단순한 JSON 요청·응답 방식은 여러 한계를 드러낸다. 명세 관리의 어려움, 직렬화 비용, 언어 간 인터페이스 불일치 등이 대표적이다. 이러한 문제를 해결하기 위해 등장한 방식이 gRPC다.gRPC는 RPC(Remote Procedure Call) 프레임워크로, 원격 서버의 함수를 로컬 함수처럼 호출할 수 있도록 추상화한다. HTTP/2 기반 통신, 바이너리 직렬화, 코드 생성 방식을 통해 서버 간 통신을 보다 명확하고 일관되게 만든다. 특히 MSA 환경에서 다수의 서비스가 서로 호출하는 구조라면 gRPC는 충분히 고려해볼 만한 선택지다.gRPC Proto 정의 방식.. 2026. 2. 20. Flyway를 이용해 데이터베이스 스키마를 버전, 히스토리 단위로 관리하는 방법 데이터베이스 스키마는 애플리케이션 코드만큼이나 중요한 자산이다.테이블, 컬럼, 인덱스, 제약조건은 시간이 지남에 따라 계속 변화하며이 변화가 누적되면 현재 DB 상태가 어떤 과정을 거쳐 만들어졌는지파악하기 어려워진다.환경마다 스키마 상태가 다르거나,누가 언제 어떤 DDL을 실행했는지 알 수 없다면배포와 유지보수는 점점 위험해진다.Flyway는 이러한 문제를 해결하기 위한데이터베이스 마이그레이션 도구다.DB 스키마 변경을 코드처럼 파일로 관리하고,버전과 히스토리를 기반으로자동 적용과 검증을 수행한다.애플리케이션과 함께 DB 변경 이력을 관리함으로써예측 가능한 배포와 안정적인 운영을 가능하게 한다.Flyway Migration 개념Flyway의 핵심 개념은 매우 단순하다.실행할 DDL과 DML을마이그레이션 .. 2026. 2. 19. Debezium CDC Polling Embedded 언제 발생할지 모르는 데이터 변경을 안정적으로 처리하는 것은많은 시스템에서 반복적으로 마주치는 문제다.데이터가 몇 초 간격으로 발생할 수도 있고,반대로 몇 시간 혹은 몇 달 동안 전혀 발생하지 않을 수도 있다.이처럼 발생 주기가 불규칙한 데이터를 처리할 때단순한 주기 기반 접근 방식은 여러 한계를 드러낸다.대표적인 해결책으로는 주기적으로 데이터를 조회하는 Polling 방식과데이터베이스의 변경 자체를 이벤트로 추적하는 CDC(Change Data Capture)가 있다.두 방식은 구현 난이도와 운영 비용, 정확성 측면에서 분명한 차이를 가진다.특히 실시간성, 데이터 유실 방지, 부하 관리가 중요한 환경에서는CDC 기반 접근이 더 적합한 선택이 될 수 있다.CDC와 Polling 방식 비교Polling 방.. 2026. 2. 19. [Infra] Jenkins 설치 Pipeline Webhook Jenkins는 CI/CD 자동화를 위해 가장 널리 사용되는 오픈소스 도구 중 하나다.하지만 처음 접하는 입장에서는 설치 단계부터 막막하게 느껴질 수 있다.Jenkins는 도커 기반으로 간단히 실행할 수도 있고,공식 홈페이지에서 직접 다운로드해 서버에 설치할 수도 있다.가볍게 기능을 테스트하거나 학습 목적이라면 도커 방식이 편리하다.반면 운영 환경에서 장기간 안정적으로 사용하려면공식 설치 패키지를 이용한 방식이 더 적합하다.서비스 재시작, 플러그인 관리, 권한 설정 측면에서 안정성이 높기 때문이다.공식 설치 후 Jenkins를 실행하면초기 관리자 비밀번호 입력 화면이 나타난다.이 비밀번호는 Jenkins가 설치된 서버의 특정 파일에 저장되어 있으며,해당 값을 입력해야 초기 설정을 진행할 수 있다.Linu.. 2026. 2. 18. [Infra] Jenkins를 이용한 CI/CD 자동화 개념과 Github Webhook Jenkins는 소프트웨어 개발 과정을 자동화하기 위한 오픈소스 도구이다.주로 CI/CD, 즉 지속적 통합과 지속적 배포를 구현하는 데 사용된다.개발자가 코드를 수정하고 저장소에 반영할 때마다빌드, 테스트, 배포 과정을 자동으로 실행해준다.사람이 직접 서버에 접속해 명령어를 입력하던 과정을하나의 트리거로 대체할 수 있다는 점이 Jenkins의 핵심 가치다.코드 변경이 발생하면 Jenkins가 이를 감지하고,미리 정의된 절차에 따라 작업을 수행한다.이로 인해 배포 속도는 빨라지고,사람이 개입하면서 발생할 수 있는 실수는 줄어든다.특히 Jenkins는 특정 플랫폼에 종속되지 않는다.Github뿐만 아니라 HTTP 요청만 보낼 수 있다면어떤 시스템에서도 Jenkins 파이프라인을 실행할 수 있다.이러한 유연성.. 2026. 2. 18. 이전 1 2 3 4 5 ··· 8 다음