기존 JDK를 지우지 않고 JDK 11로 빌드하기: SDKMAN이 PATH를 가로채는 원리

로컬은 Corretto 21인데 빌드 테스트는 JDK 11이 필요할 때, SDKMAN이 기존 JDK를 건드리지 않고 PATH 우선순위만 가로채 세션 단위로 버전을 바꾸는 원리와 기존 JDK를 처리하는 세 가지 선택

2025년 7월 24일 · 4 분 · An Seongjin

쉘 스크립트 대신 Dockerode를 고른 이유: 멀티 테넌트 프로비저닝의 롤백과 동시성

docker run을 감싼 쉘로는 실패 원인도 롤백도 다룰 수 없어 Dockerode와 스키마 분리로 테넌트 생성을 자동화한 과정

2025년 7월 14일 · 6 분 · An Seongjin

Nginx Proxy Manager API로 Proxy Host 자동으로 붙이기

테넌트가 생길 때마다 손으로 하던 도메인 연결을 Nginx Proxy Manager API로 Proxy Host를 만들어 자동화했다.

2025년 7월 5일 · 2 분 · An Seongjin

Ubuntu 컨테이너 생성부터 ModSecurity WAF 구성 및 테스트까지

앞서 ModSecurity에 대해 간단히 다뤘다. 이번에는 우분투 컨테이너 생성부터 ModSecurity 구성과 테스트까지 진행했고 그 과정을 기록했다.

2024년 8월 12일 · 2 분 · An Seongjin

ModSecurity. Opensource Web Application Firewall

부제: Docker를 사용한 ModSecurity WAF 사용기 Web Application Firewall (WAF): 웹 서비스를 통해서 공격을 시도하는 XSS, SQL Injection, Command Execute과 같은 공격을 효과적으로 차단하는 역할을 수행하는 보안 모듈

2024년 7월 30일 · 2 분 · An Seongjin

MyBatis bind tag. 동적 SQL 구현

MyBatis에서 SQL을 동적으로 작성할 때 유용한 에 대해 간단하게 정리해보았다.

2024년 7월 11일 · 2 분 · An Seongjin

Docker를 활용한 ElasticSearch, Logstash, Kibana 구성

ELK 구성 방법 중에서도 Docker를 활용한 방법으로 진행해보았다.

2024년 7월 7일 · 5 분 · An Seongjin

Nginx Proxy Manager - Official Guide & Local Setup for Customization

커스텀을 위해 코드 수정 후 Nginx Proxy Manager를 정상적으로 실행할 수 있어야했는데, 그 어디에서도 이를 위한 가이드를 찾을 수 없었다. 결국 직접 소스코드 분석 후 다음과 같은 내용들을 확인했다.

2024년 7월 5일 · 3 분 · An Seongjin

Poetry를 활용한 Python 프로젝트 관리

패키지 의존성 관리와 가상 환경 생성 및 관리를 위한 방법.

2024년 5월 4일 · 2 분 · An Seongjin

What to do about maven import errors

io.opentelemetry:opentelemetry-exporter-zipkin:jar:unknown was not found in https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of central has elapsed or updates are forced

2024년 3월 20일 · 1 분 · An Seongjin