| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Spring Boot 기반으로
DB 기반 작업 Polling → 암호화 → Socket 통신 → 복호화 → 결과 저장 흐름을 처리하는
장기 실행 Provider 연동형 Java Daemon 구조를 재구성한 포트폴리오 프로젝트입니다.
단순 Socket 연동 예제가 아니라,
운영 환경에서 중요한 설정 분리, 재시도, 타임아웃, 예외 처리, 암·복호화, 결과 반영 흐름을
Daemon 관점에서 구조화하는 데 초점을 두었습니다.
[Daemon] Polling started
[JobRepository] Pending jobs fetched: 12
[SocketService] Provider=PROVIDER_A, jobId=20260404-10321
[Encrypt] Request payload encrypted with AES/CBC/PKCS5Padding
[Socket] Connected to 127.0.0.1:9000
[Socket] Request sent successfully
[Socket] Response received
[Decrypt] Response payload decrypted successfully
[JobRepository] Result updated: jobId=20260404-10321, status=SUCCESS
[Daemon] Polling cycle completed
IP=127.0.0.1
PORT=9000
ENC_TYPE=AES/CBC/PKCS5Padding
ENC_KEY=sample_key
ENC_IV=sample_iv
ENC_OUT=HEX장기 실행 Daemon은 일반적인 요청/응답형 API와 달리, 프로세스 지속 실행과 외부 시스템 연결을 전제로 동작합니다.
그래서 단순 Socket 송수신 자체보다 작업 수집, 설정 분리, 예외 대응, 재처리, 결과 반영까지 함께 설계하는 것이 중요합니다.
특히 Provider 연동형 Socket 구조에서는 다음 문제가 중요해집니다.
이 프로젝트는 이러한 문제를 기준으로,
Provider 연동형 Socket Daemon을 운영 가능한 구조로 정리하는 것을 목표로 했습니다.
DB에서 작업을 주기적으로 Polling하고,
외부 Provider와 통신한 뒤 결과를 다시 DB에 반영하는 장기 실행 구조를 전제로 설계했습니다.
핵심은 요청 1건 처리보다, 지속적으로 반복되는 작업을 안정적으로 흘려보내는 구조를 만드는 것입니다.
Provider별 IP, PORT, 암호화 방식, 인코딩 규격 등을
파일 기반 설정으로 분리하여 런타임에서 참조할 수 있도록 구성했습니다.
실제 연동 환경을 고려하여
AES / SHA 기반 암·복호화 처리와 Base64 / HEX 변환 흐름을 반영했습니다.
핵심은 암호화 구현 자체보다, 연동 규격 차이를 통신 흐름 안에서 제어 가능한 형태로 분리하는 것입니다.
DB 작업 조회, Socket 송수신, 암복호화, 결과 반영 책임을 분리해
연동 흐름을 추적 가능하게 구성했습니다.
운영 환경에서 발생할 수 있는 연결 실패, 응답 지연, 예외 상황을 고려해
재시도, 타임아웃, 예외 처리 기준을 구조적으로 반영했습니다.
즉, 이 프로젝트는 단순한 송수신 성공보다 실패를 어떻게 다룰 것인가에 더 무게를 둡니다.
DB (Stored Procedure)
↓
JobRepository (DB / Mock 분리)
↓
SocketService
├─ Encrypt
├─ Socket Connect / Send / Receive
└─ Decrypt
↓
DB (Update Procedure)
| Area | Tech |
|---|---|
| Language | Java 17 |
| Framework | Spring Boot 3.2.1 |
| DB Access | MyBatis |
| Communication | TCP Socket |
| Encryption | AES / SHA / Base64 / HEX |
| Configuration | File-based Configuration |
| Logging | Logback |
이 프로젝트는 향후 아래 방향으로 확장할 수 있도록 고려했습니다.
핵심은 기능 추가보다, 변경이 생겨도 통신 구조가 쉽게 무너지지 않도록 만드는 것입니다.
이 프로젝트의 설계 배경과 운영 관점의 고민은 아래 글에 정리했습니다.
장기 실행 Socket Daemon을 운영 가능한 구조로 만들기 위해 고려한 것들
Keywords: Long-Running Process, Socket Daemon, Timeout, Retry, Async Processing, Config Management
| Back | FazBrowse Home | New Git URL |