26년 5월 27일 사내 봉사활동을 다녀왔습니다!평소에도 봉사활동에 관심은 있었지만, 좀처럼 시간을 내기 어려워 실제로 활동하지는 못했다.그러던 중 회사에서 굿네이버스와 함께하는 봉사활동 모집 공고가 올라왔고, 좋은 기회라고 생각해 신청하게 되었다. (선착순 모집이었는데 일정 안내 메일이 오지 않아 늦은 줄 알았지만, 다행히 6순위로 참여하게 되었다.) 봉사활동은 굿네이버스와 함께 저소득층 아동·청소년을 위한 생필품을 포장하고 상차하는 내용이었다.생각했던 것만큼 힘들지는 않았고, 전체 소요 시간은 약 2시간 정도였다.5시 퇴근 후 사내에서 간단히 저녁을 해결한 뒤, 5시 30분부터 OT와 함께 활동을 시작했다. 수요일은 암묵적으로 칼퇴하는 분위기인 날이었지만, 예상보다 많은 분들이 참여해 놀라웠다. 또한..
0️⃣들어가며,사내 서비스들의 SSL/TLS 인증서 갱신 작업을 진행하면서 생각보다 많은 시행착오를 겪었습니다.대상 서비스들은 모두 Java 기반이었지만, 실행 환경은 내장 Tomcat · Nginx · Jetty로 다양했고 Java 8 레거시부터 Java 21까지 혼재되어 있었습니다. 인증서 자체는 동일해도 환경마다 요구하는 파일 형식과 설정 방식이 달랐고, 그 과정에서 평소에는 깊게 들여다보지 않았던 개념들을 다시 마주하게 되었습니다.특히 두 가지 사고가 인상적이었습니다.브라우저에서는 멀쩡한데 Java 클라이언트에서만 SSL 오류가 발생한 케이스 — 풀체인 인증서 누락이 원인이었지만, 브라우저의 AIA 자동 보완 기능 때문에 한참 동안 원인을 찾지 못했습니다.Tomcat이 정상 기동된 것처럼 보이지만..
Controller 레벨의 예외 처리는 아래 포스팅을 참고해주시면 됩니다.RFC 9457과 헥사고날 아키텍처로 구현하는 예외 처리 설계서0️⃣들어가며Spring Boot로 REST API를 개발할 때 JWT 기반 인증을 도입하면, 반드시 마주치는 문제가 있습니다. 공들여 설계한 @RestControllerAdvice 기반 예외 처리가 Security Filter에서는 전혀 동작하지 않는다는 점입니다.단순히 "Filter는 DispatcherServlet 앞단이라서"라고 넘기기 쉽지만, 정확히 왜 그런지 구조를 이해하지 못하면 JWT 커스텀 필터를 만들 때 의도치 않은 500 응답을 마주하게 됩니다.이 포스팅은 JWT 커스텀 필터를 사용하는 환경을 전제로, Spring Container와 Servlet C..
이번 포스팅에서는 사내 웹서비스를 개발하며 예외처리에 대해 고민했던 부분을 정리해봤습니다.참고 포스팅Spring Security Filter 예외 처리 + 전략0️⃣들어가며: 예외 처리에 대한 우리 팀의 고민시스템이 성장하고 아키텍처가 복잡해질수록 '예외를 어떻게 정의하고, 어디서 던지며, 클라이언트에게 어떻게 보여줄 것인가'에 대한 기준이 모호해지곤 합니다. 특히 표준화되지 않은 에러 응답은 프트엔드와의 소통 비용을 증가시키고, 레이어 간 책임이 섞인 예외는 시스템의 결합도를 높입니다.우리 팀 또한 절대적인 시간이 부족한 상태에서 서비스 개발을 진행하는 과정에서 예외 처리에 대한 설계, 컨벤션없이 진행하다보니 점점 복잡해지고 구조 파악에 상당 시간이 드는 것을 체감했습니다.이러한 문제를 해결하기 위해 ..
레퍼런스블록, 파일, 객체 — 스토리지 3종류를 제대로 이해하기https://infinitecode.tistory.com/139객체 스토리지 (Object Storage)https://infinitecode.tistory.com/140MinIO(미니오)객체 스토리지 시장에서 Amazon Web Services(AWS)의 S3는 사실상 글로벌 표준(Standard)입니다.수많은 오픈소스와 기업용 솔루션들이 S3 API와 호환되도록 개발됩니다.MinIO는 바로 이 S3 API와 100% 호환되도록 설계된 고성능 객체 스토리지입니다.강력한 호환성으로 인해 개발자는 소스 코드를 작성할 때 AWS S3 라이브러리(SDK)를 그대로 사용하면서, 연결하는 엔드포인트 URL만 AWS가 아닌 로컬의 MinIO 주소(ex..