전체 글36 AI 채팅 백엔드 서버가 뭐가 어려워? 백엔드 개발자: 🥲 (이론편) 서론 최근 AI를 중심으로 한 서비스뿐만 아니라, 일반적인 서비스에도 AI 관련 기능을 포함시키는 일이 잦아졌습니다. 저도 이런 현업의 흐름 속에서 AI 관련 기능, 특히 LLM의 텍스트 응답을 핸들링하는 백엔드 서비스를 몇 개 개발했는데요. 관련해서 어려웠던 점, 배운 점을 공유드리려고 합니다.AI 채팅 백엔드 서버 개념 AI 채팅 서비스를 개발한다고 할 때, 여러 영역에서 개발이 필요합니다. 제가 개발한 부분은 client와 LLM 중간에 있는 Chat Server에 해당하는 부분이고, 이번 블로그 글에서는 해당 부분을 개발하면서 배운 점에 대해서 이야기해보려고 합니다.구현 이전에 규격의 문제 처음에는 설계상으로는 까다로울 점이 없다고 생각했습니다. Client가 요청하면, LLM 쪽에 요청을 보내고.. 2026. 9. 25. Kubernetes ClusterIP Service에서 HTTP의 TCP 연결 재사용이 L4 로드밸런싱에 미치는 영향 실험 1. 서론1.1 문제 정의: ClusterIP(L4)에서 TCP 연결 재사용과 트래픽 fairnesshttps://dogfood.tistory.com/entry/프로덕션-장애로-배운-Kubernetes-L4-로드밸런싱과-HTTP2 장애 발생으로 배운 Kubernetes L4 로드밸런싱과 HTTP/2장애 양상 및 대처 갑작스럽게 대부분의 트래픽이 실패하며 HTTP 요청에 대한 timeout이 발생하였으며, 약 30분이 지난 후에 별다른 조치 복구되었다.사후 분석장애가 발생한 부분은 외부와의 연동dogfood.tistory.com 이전에 k8s ClusterIp Service에서는 L4 기반 로드밸런싱을 하고, 원리상 HTTP/2를 사용하면 TCP 연결 재사용으로 인해 L4 로드밸런싱이 의도한 대로 동작하.. 2026. 5. 4. KrakenD 적용기: 분산 환경에서 JWT 강제 폐기 요구사항을 대응하며 1. 들어가며 이 글은 KrakenD를 API Gateway로 도입한 이후, 분산 환경에서 토큰 만료 처리의 일관성을 어떻게 보장할 것인가에 대한 설계와 운용 경험을 다룹니다. KrakenD 자체의 도입 의사결정이나 다른 Gateway 솔루션과의 비교는 다루지 않습니다. 대신 KrakenD 특유의 구현 디테일보다는 한 단계 위에서, API Gateway 단의 토큰 만료 일관성을 설계할 때 분산 시스템적 요구사항을 어떻게 얹었는지에 초점을 맞춥니다. 본격적인 논의에 앞서, 이 작업이 시작된 맥락부터 정리하겠습니다.어떤 요구사항에서 시작되었는가? 해당 프로젝트에서는 JWT로 인증 토큰을 발급하기로 설계가 되었습니다. 그런데 보안 요구사항이 추가되었습니다.사용자가 로그아웃 API를 호출하면, 그 사용자에게 발.. 2026. 5. 2. 장애 발생으로 배운 Kubernetes L4 로드밸런싱과 HTTP/2 장애 양상 및 대처 갑작스럽게 대부분의 트래픽이 실패하며 HTTP 요청에 대한 timeout이 발생하였으며, 약 30분이 지난 후에 별다른 조치 복구되었다.사후 분석장애가 발생한 부분은 외부와의 연동 포인트를 담당하는 모듈이었고, 나중에 inbound 트래픽에 대한 로그를 찍어 보니 아래와 같은 그래프 양상을 볼 수 있었다. 트래픽이 선형적으로 느려지거나 하는 증상 없이 갑작스럽게 응답에 지연이 발생했으며, 가로선은 HTTP Timeout 설정으로 인해 발생한 것으로 보였다.현상은 약 20분 정도 지속되었으며 13:10 이후에는 해소되었다.장애가 자연 해소되었기에, 처음에는 외부 연동포인트 등에서 장애가 발생한 것이 아닌가 의심을 했다.그러나 이 가설은 맞지 않은 것으로 드러났다.외부 연동포인트 측에 연.. 2026. 4. 6. 부하테스트를 진행하며 배운 것들 (!개인적인 경험 주의!) 들어가며부하테스트를 진행하기 전에는 부하테스트에 대해서 가지고 있던 막연한 두려움이 있었다.백엔드 개발자로서, 자기가 짠 코드가 높은 부하를 견디는 걸 경험해보고 싶어하지만 실제로 그런 경험을 해보기는 쉽지 않기 때문이다. 개인적인 돈을 투자해서 부하테스트를 해보긴 쉽지 않고, 업무로써 높은 트래픽을 감당해보는 건 내가 원한다고 되는 일이 아니다. 그러다보니 테스트를 진행하기 전에는 막연한 두려움이 있었고, 그 두려움은 내가 뭘 모르는지도 모르는 채로 일정 안에 테스트를 통과해야한다는 압박감 때문이었다. 실제로 테스트를 진행해보면서 많은 것들을 배울 수 있었고, 깨달음을 얻은 부분에 대해서 기록을 남기려고 한다. 이 글에서는 부하테스트를 준비하고 진행하면서 겪었던 문제들과 그 과정에서 얻은 인사이트를 정.. 2026. 1. 21. Go 바이너리 실행시 ENOENT(No such file or directory) 문제 해결하기 - C 표준 라이브러리 구현체를 찾아서 문제 발생 상황Go 언어로 애플리케이션을 개발하고, 바이너리로 빌드한 다음 로컬에서 실행해보면 문제가 없는데 컨테이너로 띄우면 No such file or directory 에러가 뜨는 경우가 있습니다. 컨테이너 안에서 명령어를 쳐서 바이너리가 있는지 검사해봐도 아무런 문제가 없는데요.실제로 실행하려고 보면 파일이나 디렉터리가 없다고 에러가 뜨는 것이죠. 개발자의 눈으로 보면 아무런 문제가 없기 때문에 이러한 에러는 해결하기 매우 어려웠습니다. 이 문제를 해결하면서 Go와 이외 주변 영역에 대한 다양한 지식을 얻게 되었는데요.반대로 여러 배경지식이 있어야만 쉽게 풀 수 있는 문제였습니다. 결론부터 말씀드리면, C 표준 라이브러리 구현체를 빌드 환경과 실행 환경이 호환되도록 맞춰 줘야 합니다.왜 ENOEN.. 2025. 1. 20. Go 언어 개발기 - Go로 gelf-forwarder를 만들다 서문많은 개발자들이 그렇겠지만 Go를 공부하고 Go로 개발해보고 싶다는 생각은 많이들 하는 것 같습니다.Stackoverflow에서 최근에 시행된 2024 Survey를 보니, Go는 전체 7위로 많이 배우고 싶어 하고, 또 만족감이 높은 언어인 것 같습니다.https://survey.stackoverflow.co/2024/technology#admired-and-desired-language-desire-admire Technology | 2024 Stack Overflow Developer SurveyPostgreSQL debuted in the developer survey in 2018 when 33% of developers reported using it, compared with the mo.. 2025. 1. 19. Redirect URI는 프론트엔드여야 할까? 백엔드여야 할까? (OAuth 2.0에 대해서 알아보기) 계기: Redirect URI는 프론트엔드여야 할까? 백엔드여야 할까? 최근에 회사에서 개발을 진행하던 중, 로그인 방식 중 MS Entra ID 로그인을 구현해야 하는 요구사항이 있었습니다. MS Entra ID는 마이크로소프트에서 제공하는 OIDC 규격의 서드파티 로그인 서비스인데요. 사실 이번에 직접 구현해보기 전까지는 OAuth 2.0과 OIDC에 대해서 개념만 대충 알고 있었고, '실제로 구현하게 되면 그때 문서 보고 하지~' 같은 안일한 마음으로 열심히 공부하지 않았습니다. 그런데 막상 구현하려고 보니 생각보다 막히는 부분도 많았고, 프론트엔드 분들과 소통할 때도 서로 생각하는 시퀀스가 달라서 뭐가 맞는지에 대해서 고민이 많이 되더라구요. 그 중에서 가장 의견이 분분했던 Redirect UR.. 2024. 12. 24. 이전 1 2 3 4 5 다음