[Kotlin + SpringBoot] Flowise + LLM 에러분석 자동화 적용기
·
Java & Kotlin
🧐 들어가기전개발과 운영의 경계에서 늘 서비스 안정성에 대한 고민은 계속됐다. 특히 예측 불가능한 에러가 발생했을 때, 빠른 인지와 정확한 원인 분석은 장애 시간을 최소화하고 사용자 경험을 보호하는 데 핵심적인 역할을 수행한다. 하지만 매번 발생하는 에러 로그를 일일이 확인하고 그 방대한 데이터 속에서 유의미한 패턴과 근본 원인을 찾아내는 일은 시간과 노력이 소모되는 고된 작업이었다.이 과정 속에서 조금 더 생산성과 효율성을 높이고자 하는 인프라 구축에 대한 필요성을 느꼈다. 그러던 중 최근 토스(Toss) 테크 글을 보게 됐고, "에러를 누군가가 분석해주고 결과와 해결 방법만 제시해서 알림만 오도록 구현할 수 있다면?"이라는 상상이 현실로 실현되는 자동화 구축 사례를 접했다. 해당 글을 참고하며, 우..
[CI/CD] blue/green 무중단 배포 (Docker, Github Actions, Nginx)
·
CI-CD
🧐 들어가기전 [CI/CD] Docker와 Github Actions으로 CI/CD 파이프라인 구축하기🧐 들어가기전최근에 예전에 진행했던 프로젝트를 코프링(Kotlin + Spring) 기반으로 마이그레이션하는 작업을 시작하게 되었다. 당시에는 코드가 수정될 때마다 로컬에서 빌드한 파일을 서버에jhzlo.tistory.com기존에 Docker를 활용해 CI/CD 자동화 파이프라인을 구축했을 때는 개발과 배포가 한층 편리해졌다고 느꼈다. 자동화된 빌드와 배포 과정 덕분에 일일이 수동으로 작업하던 번거로움이 줄었고, 팀원들과의 협업도 수월해졌다. 하지만 실제 프로젝트에 적용해보니 불편한 점도 많았다. 특히 MVP가 어느 정도 완성된 후 실제 서비스를 배포했을 때, 생각보다 다양한 버그들이 눈에 띄었다. ..
[JSP] 서블릿, 서블릿 컨테이너 (feat.톰캣)
·
Java & Kotlin
🧐 들어가기전 최근에 k6로 부하 테스트를 진행하면서, 요청이 몰릴 때 톰캣이 밀리며 응답 속도가 느려지는 현상을 확인할 수 있었다. 현상 자체는 이해가 갔지만, 정작 '톰캣이 밀린다'는 게 정확히 어떤 구조적인 이유에서 비롯된 건지는 잘 모르겠다는 생각이 들었다. 톰캣이 뭔가 처리를 못하고 대기열이 쌓이는 건 알겠는데, 그 안에서 서블릿은 어떤 역할을 하고, 서블릿 컨테이너는 어디까지 책임지는지 등 기본적인 개념이 모호하게 느껴졌다. 그래서 이번 기회에 톰캣의 동작 원리를 중심으로, 그 핵심 구성 요소인 서블릿과 서블릿 컨테이너에 대해 제대로 정리해보려고 한다.🔸Servlet(서블릿)1️⃣ 서블릿이란? 자바 기반의 웹 요청 처리용 서버 사이드 컴포넌트로, HTTP 요청을 받아 처리하고, 그 결과를..
[Spring Data JPA] Offset 기반 Pagination 성능 향상하기 (index 설정, count 쿼리 캐싱)
·
Java & Kotlin/JPA
🧐 들어가기전프로젝트를 진행하면서 Pageable을 활용한 검색 필터링 API를 구현해야 했다. 이 API는 프로젝트의 핵심 자재인 원단을 등록하고 조회할 때 사용되며, 비즈니스 로직의 특성상 원단은 빈번하게 조회해야 하며, 조회 결과를 기반으로 다음 단계의 로직이 수행되기 때문에 조회 성능이 매우 중요한 요소였다. 해당 API는 총 다섯 개의 파라미터를 받는다.page, size, startDate, endDate, 그리고 fabricTypeName이며, 이 중 fabricTypeName만 필수로 입력받고 나머지 값들은 선택적으로 전달된다. JPA Repository에서는 아래와 같이 @Query를 사용하여 JPQL로 조회 조건을 정의하였다: @Query( """ SELECT f F..
[Spring Data JPA] Pageable, Page, Slice 뜯어보기 (JPA에서 Page를 생성하는 내부 동작)
·
Java & Kotlin/JPA
🧐 들어가기전페이스북, 인스타그램, 네이버 카페 등 우리가 자주 사용하는 서비스들에는 공통점이 하나 있다. 바로 모든 데이터를 한 번에 보여주지 않고 필요한 만큼만 잘라서 보여준다는 점이다. 사용자는 현재 보고 있는 데이터를 기준으로 "다음", "이전", 또는 "특정 페이지"를 요청하고 시스템은 이에 맞는 데이터 일부만을 응답한다. 이는 단순히 UX의 문제만은 아니다. 수천, 수만, 수백만 건에 달하는 데이터를 한 번에 응답하는 일은 서버에 큰 부하를 주고 성능 저하나 장애로 이어질 수 있다. 따라서 위 사진처럼 N개의 데이터만 보여주고, 사용자의 요청에 따라 다음 혹은 이전 순번의 N개의 데이터를 볼 수 있게 구현하는 것을 통해 이러한 점을 보완할 수 있다. 하지만, 위와 같은 기능을 구현하기 위해서..
[백준] 1806번 부분합 (투포인터, 슬라이딩 윈도우) - JAVA
·
CodingTest
🧐 문제https://www.acmicpc.net/problem/180610,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.첫째 줄에 N (10 ≤ N 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다.10 15 5 1 3 5 10 7 4 9 2 8🔸완전탐색? →🚨시간초과주어진 수열에서 연속된 부분 수열의 합이 S 이상이 되는 가장 짧은 길이를 구하는 문제이다.이걸 처음 접하면 for문을 중첩해서 사용하는 방식이 제일 먼저 떠오를 것이다.int minLength = Integer.MAX_VALUE;..
J_hzlo
J_hzlo