DEV ℧ Developer Diary

[AI] Prompt에서 Loop까지: LLM 애플리케이션 엔지니어링의 변화

개요

LLM 기반 서비스가 대중화되었을 때 많은 사람들은 큰 충격을 받았다. 글쓰기, 요약, 번역, 코드 작성처럼 이전에는 사람이 직접 해야 했던 작업을 자연어 질문 하나로 수행할 수 있었기 때문이다.

초기의 관심은 자연스럽게 “어떻게 질문해야 더 좋은 답변을 얻을 수 있을까?”에 집중되었다. 같은 모델을 사용하더라도...

[AI] LLM 애플리케이션을 이해하기 위한 핵심 용어 정리

ChatGPT가 세상에 나온 이후 LLM을 활용한 서비스가 빠르게 늘어나면서, 관련 개념도 많이 생겨났다. 처음에는 단순히 “프롬프트를 잘 쓰면 된다” 정도로 이해할 수 있었지만, 실제로 LLM을 애플리케이션에 적용하기 시작하면서 이야기가 달라졌다.

LLM은 단순히 사용자의 질문에 답하는 모델이 아니라, 외부 문서를 참고하고, 도구를 호출하고, 작업 절차를 따르고,...

[Java] Kafka Consumer 서비스에 Blue-Green 배포 적용기

주문 이벤트를 처리하는 Kafka Consumer 서비스의 배포 방식을 Rolling 배포에서 Blue-Green 배포로 전환했다.

일반적인 Web API 서버라면 Blue-Green 배포는 비교적 단순하다. 새 버전을 띄우고 health check를 통과하면 트래픽을 전환하면 된다.

Kafka Consumer와 WEB API 서비스의 차이

Kafka Consumer 서비스는 조금 다르다.

Consumer는 HTTP 트래픽을...

[Java] 비동기 처리 중 다른 회원 데이터가 섞인 이유: AttributeConverter와 Race Condition

미납 결제건을 재결제하는 배치에서 이해하기 어려운 문제가 발생했다.

배치는 30일 이상 미납된 결제건을 조회한 뒤, 각 결제건을 비동기로 병렬 처리하고 있었다. 그런데 배치 실행 후 일부 결제 데이터의 구매자 이메일과 전화번호가 다른 회원의 값으로 UPDATE되는 현상이 확인되었다.

처음에는 DTO 생성을 위해 엔티티의 getter를 호출했을 뿐인데...

[Java] 주문 서버 Heap Memory Leak 분석 및 조치 정리

시기가 좀 지났던 Trouble shooting 이지만, 기존에 단순히 끄적여놨던 원인 분석을 정리해서 올려보고자 한다.

1. 사건 개요

2024년 5월경, 주문 서버의 Heap 메모리 부족으로 인해 health-check API (SELECT 1)에 지연 알림이 발생했습니다.

발생 상황

name: 주문 API address: http:///actuator/health status:...