본문 바로가기

All222

단위테스트 코드의 가상 SFTP Mock/Embedded 활용 업무에서 SFTP를 활용해, 여러 서비스간 파일을 주고 받는 모듈이 존재를 한다.하지만, 매번 SFTP 연결과 파일 제공, 수신부 테스트를 위해서 협의 요청, 서버상태 확인, 아이디/비밀번호 확인을 보안상으로 계속 확인해봐야하는 경우가 생겨,Postman 의 API 를 활용하는 대신 Test Code를 활용해서 SFTP 연결과 관련 서비스의 테스트를 진행하기로 했다. 찾아보면서 일반적인 Mock처리가 아닌, 실제 SFTP 환경처럼 구성해 활용할 수 있었고,많이 활용할 수 있기 때문에 샘플 코드도 써보고 동작시키면서,아래 정리를 했다.단위테스트에서의 가상 SFTP Mock/Embedded 활용메모리의 가상(Embedded) SFTP 서버 를 활용해서 테스트네트워크를 사용하는 실제 SFTP 서버를 단위테스트.. 2026. 3. 6.
(25.12.29) Java Spring 에서의 SFTP API를 통해서 서버간 데이터를 주고 받을 수 있지만, 비동기 방식으로 외부 서버와 서비스가 연동이 되어있을 때는,파일 전송을 위해 SFTP 를 구성하기 된다 실제 업무에서도 SFTP를 통해 외부 서버와 파일을 주고 받으면서 서비스가 운용되므로 해당 부분을 JavaSpring 서버단 기준으로 정리하고, 또, 레거시인 기술과 다른 Integrated 된 모듈을 활용하는 방법으로도 정리하고자 한다.SFTPSSH File Transfer Protocol, 네트워크 프로토콜로, 원격 시스템 간에 파일을 안전하게 전송하고 관리하기 위한 규칙(통신 규약)SSH 연결을 통해 파일 전송, 디렉토리 조작, 목록 열람 같은 작업을 처리특징네트워크 트래픽 전부 암호화 (평문 전송 없음)기본적으로 SSH(포트 22) 위에서 .. 2025. 12. 29.
(25.12.02) 헥사고날 아키텍처(Ports & Adapters) 취업을 한 후, 보안상 여러가지의 기술과 코드들을 직접적으로 블로그에 기술할 수가 없어 작성이 뜸해지지만, 개발과정에서 탐구하고 공부해야할 것들을 꾸준히 적고 기록하고자 한다. 규모가 큰 SI 프로젝트와 고도화 프로젝트인 만큼 Spring 기반의 아키텍쳐에 대해서 알아봐야할 필요가 있었고,다른 회사에서도 Hexagonal Architecture 기반의 개발 역량을 요구하기도 하기 때문에,미리 학습하고 정리하고자 한다. 헥사고날 아키텍처(Ports & Adapters)Domain 에 비지니스 로직을 중심을 두고, 외부에 Web, DB, Message, API 등을 구성해 Port(Interface)로 연결된 Adapter(구현체) 로 분리한 아키텍처처음 Alistair Cockburn 가 해당 아키텍처를.. 2025. 12. 2.
(25.10.22) Java Spring 에서의 Caching 업무간 단일 쓰레드 환경의 싱글톤 환역엥서 작업을 처리해야하는 로직이 필요하고 있다.담당 업무가 아니지만 같은 프로젝트에서 개발 중인 만큼 Java Spring의 캐싱을 활용해서 개발내용을 정리하면서충분히 활용할 수 있도록 하려고 한다. Java의 Caching 캐싱@Cacheable 같은 Spring의 캐싱 어노테이션은 JVM 레벨의 메모리 캐싱을 기반으로 작동Spring 캐시 추상화 → 캐시 구현체 → JVM 힙 메모리(Heap Memory) 순서대로 작동할 수 있도록 함따라서 Map 형태로 저장Cache 구현체@EnableCaching 등을 사용할 때 활용할 수 있는 다양한 캐싱용 구현체 구현체 저장 위치 특징 ConcurrentMapCache (기본)JVM Heap매우 단순, 기본 Map 기반.. 2025. 10. 22.
(25.10.01) Reactor 기반의 비동기 처리 로직 회사에서 코드를 보면서 어러 서버의 통신으로 개발이 진행되면서,TPS 와 연동하는데 있어서 Java의 Reactor 기반으 작성된 코드를 보고 활용할 필요가 있었다.낯설 수 있는 Reactor에 대해서 사용 방법과 구조를 나름대로 정리해보고 찾아보면서 기록하고자 했다. ReactorProject ReactorJVM 기반 비동기/논블로킹 프로그래밍을 위한 리액티브 라이브러리대표 타입들을 통해서 비동기 처리 로직을 구현Reactive Streams 표준(Publisher, Subscriber, Subscription) 구현체 중 하나scheduler와 함께 연산자와 사용해 활용할 수 있음.subscribeOn(scheduler) → 구독 시점 및 업스트림 실행 컨텍스트 지정.publishOn(schedul.. 2025. 10. 1.
(25.09.25) MyBatis Mapper 구문 절 확인해보기 직장에서 업무를 진행하면서, JPA 를 활용하지 않고, 다양한 안정된 복잡한 쿼리를 DB에 보내기 위해MyBatis를 적극적으로 활용하고 있다. SQLD도 취득을 하고, 쿼리 작성 연습도 꾸준히 하고 있음에, 그대로 쿼리를 String으로 그대로 쓰려고 했지만, MyBatis에서는 OGNL을 따르면서, 미리 짠 쿼리를 다시 MyBatis에서 사용할 수 있도록 하는데에 꽤 리소스를 잡아먹었다. 이에 가장 많이 사용 되는 조건 문과 많이 사용하는 구문을 토대로,MyBatis 매퍼를 간단하게 분석하고 기록해서 잊지 않도록 하려고 한다.DB에서 특정 성별(gender) 별, 생성/업데이트 날짜 구간별, 나이 구간별 사용자 리스트를 구하는 MyBatis SQL Mapper(Altibase 환경)요청 예시 (→ U.. 2025. 9. 25.
(25.09.02) Java Spring 의 스케쥴러 @scheduled의 shedlock 최근 모 회사의 Platform Backend Engineer로 8월 11일 부터 개발자로 시작하게 되었다.Java Spring 기반의 백엔드 서비스 Platform의 개발을 담당하면서, 서버단에서의 자동화를 위한 Scheduler가 존재하고,대용량 DB 처리를 위해 미들웨어 또는 DB단에서가 아닌 Scheduler단에서 동시성을 제어할 수 있도록 shedlock 을 걸어줘야 했다. 분산 인스턴스에 적합한 Scheduler 대상으로 하는 shedlock 이기 때문에 이에 대해서 간단하게 찾아보면서 예시도 스스로 작성하면서 기록을 하고자 했다. ShedLockDB 등 분산 환경에서 @Scheduled 즉, Scheduler 등의 스케쥴 작업이 동시에 중복 실행되지 않도록 / 분산 DB 에서 중복해서 각.. 2025. 9. 2.