분류 전체보기

    2026 Microsoft AI Tour Seoul 다녀왔습니다..

    2026 Microsoft AI Tour Seoul 다녀왔습니다..

    3월 26일, 코엑스에서 열린 마이크로소프트 AI 투어 서울에 다녀온 후기왜 갔냐면요솔직히 말하면, 반강제로?현재 다니는 회사에도 M365 Copilot이 도입되어 있는데, 막상 쓰라고 하면 뭘 어떻게 써야 하는지 막막했다. 회사에서도 AX(AI Transformation)를 연일 강조하고 있고, "AI 안 쓰면 뒤처진다"는 분위기가 팽배한데... 정작 현업에서 어떻게 녹여내야 할지는 감이 안 왔다.그러던 중 MS AI Tour 세션 리스트를 봤는데, 특정 세션들이 내 환경에 너무 딱 맞았다:폐쇄망 환경에서의 Agent 활용다중 서버 모니터링 자동화비개발 직군의 AI 접근성"이건 가야겠다" 싶었다.현장 분위기아침 일찍 도착했는데, 이미 사람들이 꽤 많았다. 코엑스 오디토리움 쪽 전체가 MS 부스로 덮여 ..

    엘라스틱서치 index_closed_exception 트러블슈팅

    발단기존 스프링 앱에서 돌고 있던 스케줄 잡을 Quartz로 이관하는 작업을 맡게 됐습니다. 기존 앱을 내리기로 했고, 해당 잡을 Quartz로 옮기는 게 제 담당이었습니다.기존 코드를 뜯어보니 특정 예외를 로그도 없이 그냥 삼키고 있는 부분이 있었고, 관련 내용이 팀 내에 공유된 적도 없었습니다.이관하면서 로깅을 제대로 붙이고 나서야 매일 새벽 특정 시간대에 아래 에러가 간헐적으로 발생하고 있었다는 걸 처음 알게 됐습니다.org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=index_closed_exception, reason=closed]서비스 영향은 없었고 다음 실행에서 자연스럽게 복구되고 있었지만, 매일 같은..

    [성능개선] MongoDB 쿼리 최적화로 30% 성능 향상시키기: batchSize와 쿼리 조건 개선

    저는 그동안 RDBMS나 Elasticsearch처럼 익숙한 시스템들을 주로 다뤄왔고, MongoDB는 이번 프로젝트에서 처음 사용하게 되었는데요. 이 MongoDB는 실제 서비스에 등록된 사용자 데이터를 비롯한 여러 데이터들을 보관하는 용도로 사용되고 있습니다.로그수집기내에서는 이 데이터를 조회해 메모리에 캐시(Map 형태)로 적재해두고, 이후 수집된 로그 파일들에서 특정 필드를 기준으로 MongoDB의 데이터를 조인하듯 매핑해 메타데이터를 추가합니다. 그렇게 가공된 로그는 Kafka → Logstash → Elasticsearch로 이어지는 파이프라인을 타게 됩니다. MongoDB는 여기서 메타데이터의 원천 역할을 하고 있는 셈입니다. 이 캐시 적재 작업은 매일 새벽 한 번 실행되고 있었고, 수년간 ..

    Apache HTTPD 버전 업그레이드 중 MPM 이슈와 해결 과정

    Apache HTTPD 버전 업그레이드 중 MPM 이슈와 해결 과정

    최근 회사에서 보안 취약점 점검 결과, Apache HTTPD 버전 업그레이드를 진행해야 했다. 기존에 사용하던 버전은 2.4.5x였고, 2025년 초 기준으로 2.4.6x 버전으로 올려야 하는 과제가 주어졌다. 사내 환경은 httpd, Nginx, Tomcat 등등 이외에도 다양한 웹/WAS 서버로 구성되어 있는데, 서비스 영향도를 고려해 영향도가 적은 서버부터 업그레이드를 시작했다.기존엔 nginx를 주로 쓰다보니 httpd 버전 업그레이드는 처음 해보는 작업이었다. 게다가 금융권 폐쇄망의 온프레미스 환경이라 설정 및 배포에 제약이 많았다.평소 Docker로 편하게 작업하던 터라, 사전에 준비된 설치 파일을 하나하나 업로드 후 빌드해야 하는 상황이 좀 아쉬웠다. 폐쇄망이라 외부 레포지토리 접근도 안 ..

    ChatGPT 채팅 삭제, 크롬 확장 프로그램으로 자동화하기

    ChatGPT를 쓰다 보면 대화 기록이 계속 사이드바에 남게 됩니다. 삭제하려면 수동으로 하나씩 지워야 하고, 대화량이 많아질수록 꽤 번거로운 작업이 됩니다.저는 ChatGPT를 자주 사용하는 편인데, 개인적으로 채팅 목록을 깔끔하게 정리하고 싶어서 직접 확장 프로그램을 만들어보기로 했습니다.프론트엔드 쪽은 따로 경험이 없어서 처음부터 혼자 구현하긴 어려웠고, 기본적인 구조와 접근 방식은 ChatGPT에게 도움을 받아 시작했습니다.그 후 실제 DOM 구조나 동작을 보면서 디버깅하며 필요한 부분을 수정해가며 완성한 형태입니다.이름은 chatgpt-chat-remover입니다. 주요 기능전체 삭제: 기존 채팅 목록 전체를 선택해 한 번에 삭제할 수 있습니다.선택 삭제: 원하는 대화만 체크해서 개별 삭제할 수..

    Spring Boot 3.4.3에서 Auto-configuration이 동작하지 않는 문제 해결

    문제 상황Spring Boot 3.4.3에서 라이브러리를 개발하면서 META-INF/spring.factories에 EnableAutoConfiguration을 등록했지만, 자동 설정이 적용되지 않았습니다......문서를 찾아보니 Spring Boot 2.7 Release Notes와 Spring Boot 3.0 Migration Guide에서 관련 내용을 다루고 있었습니다. 원인 분석Spring Boot 2.7에서 변경된 Auto-configuration 등록 방식기존에는 spring.factories에 자동 구성 클래스를 쉼표로 구분하여 등록했지만, Spring Boot 2.7부터는 새로운 방식이 추가되었습니다.기존 방식: spring.factories에서 org.springframework.boot..

    Java에서 Thread.UncaughtExceptionHandler 활용하기

    Java에서 Thread.UncaughtExceptionHandler란?최근에 스프링 프레임워크를 사용하지 않고 프로젝트를 진행하면서 Thread.UncaughtExceptionHandler의 필요성을 몸소 체감하게 되었습니다. 기존에는 스레드 내부에서 개별적으로 예외를 처리하는 방식이 일반적이라고 생각했는데, 여러 개의 스레드에서 발생하는 예외를 효과적으로 관리하기 위해서는 보다 체계적인 접근이 필요하다는 것을 깨달았습니다.주로 프레임워크를 사용하다 보니, 다들 아시다시피 제공해주는 @RestControllerAdvice 같은 어노테이션을 활용해서 예외를 처리하는 것이 일반적이었습니다. 하지만 이번 프로젝트를 진행하면서 프레임워크의 예외 처리 기능 외에도 Thread.UncaughtExceptionHa..

    IntelliJ 특정 버전 JDK 21 사용 시 컴파일 오류

    문제 환경IDE 버전: IntelliJ IDEA 2023.1Java 버전: JDK 21이슈 발생최근 작업을 하다 파라미터로 TimeUnit 타입을 전달해야 하는데 하기 이미지와 같이 컴파일이 안되는 상황이었다. java.util.concurrent.TimeUnit 관련해서 컴파일 오류가 발생했다. 왠지 느낌상 버전 이슈인가..?? 싶어 찾아보니, StackOverFlow와 jetbrains issue를 확인해보니 같은 문제를 겪고 있는 사람들이 좀 있었다. https://stackoverflow.com/questions/77551293/intellij-idea-jdk-21-issue-with-java-util-concurrent-package-timeunit-class IntelliJ IDEA + J..

    [spring] gradle build fail

    intellij로 spring 프로젝트를 신규 생성했는데 빌드가 실패하는 상황이 발생했습니다. 해당 프로젝트 버전은 하기와 같았습니다. version spring-boot - 3.1.4 java - 17 해당 에러 A problem occurred configuring root project 'token-bucket'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.4. Required by: project : > org.springframework.boot:org.springframework.boot.gra..