네트워크 병목을 해결하는 법 : 대용량 업로드

개발을 하다 보면 ‘파일 업로드’ 같은 기능들은 자주 접하게 된다. 나 역시 많은 업로드 기능을 만들어왔지만, 이번에 대용량 업로드 파일을 다루게 되면서 블로그에 정리를 해보려고 한다. 단순히 form에 파일을 담아 보내는 것이 아닌, 대용량이라는 한계를 넘기 위해 브라우저의 내부 구조를 뜯어보고 네트워크 자원을 어떻게 요리해야 할지 고민해야 했다. “브라우저는 한 번에 몇 개의 요청을 보낼 수 있을까?”, “청크 조각을 많이 나누면 무조건 빠를까?” 같은 근본적인 질문들에 답을 찾아가며 구현했던 과정들을 기록해 보려 한다. ...

January 25, 2026

Next.js 'use client'는 내부적으로 어떻게 동작할까?

Next.js의 App Router로 프로젝트를 개발하다 보면 ‘use client’를 자주 사용하게 된다. Next.js 12 버전까지는 getServerSideProps를 사용해서 페이지 단위로 SSR을 구현했다. 하지만 13 버전에서 App Router가 도입되면서 접근 방식이 완전히 바뀌었다. 모든 컴포넌트가 기본적으로 서버 컴포넌트로 동작하고, 클라이언트에서 상태 관리나 이벤트 핸들러가 필요한 경우에만‘use client’를 파일 최상단에 작성하면 된다. “그냥 최상단에 ‘use client’만 사용하면 CSR로 동작하는구나!” 라고만 생각하고 내부적으로 어떻게 동작하는지 모르고 사용했다… Next.js의 공식 문서에서도 “use client” is used to declare a boundary between a Server and Client Component modules. ...

November 30, 2025

회의록 자동화 서비스 개발기: STT 모델 선택부터 LangChain까지

지난 블로그에서 LangChain에 대해 정리했었다. 어떻게 동작하는지, 왜 필요한지 알아만 보고 빡빡한 배포 일정으로 만들어보지 못했다. 반성하자^^ 어떤 AI 서비스를 만들어볼까를 고민하다가, 요즘 회의를 할때 기록을 해두지 않으면 종종 놓치는 부분들이 생기고 있다. 회의 중에 집중하느라 놓치는 부분도 있고 악필이라 메모를 해도 이게 뭐였지 하는 부분이 가끔 있다… | 이러한 부분을 자동으로 텍스트로 바꾸고, AI가 요약해주면 좋을 것 같다는 생각이 들었다. 예전 항해를 했을때 멘토 시간에 꼭 서기가 필요했었는데, 자동 완성을 해주는 AI가 있으면 편하지 않을까라는 생각도 들었었다. ...

October 2, 2025

LangChain 무엇인가?, 프론트엔드와의 접점

그동안 주로 프론트엔드에 집중해 왔지만, 운 좋게? AI 관련 회사들에서 경험을 쌓을 수 있었다. 첫 회사에서는 음성 인식(STT) 을 다루는 곳이었고, 현재 다니고 있는 회사 역시 스캔 데이터을 활용한 AI 서비스를 만들고 있다. 겉으로 보기에는 사용자에게 보이는 화면을 만드는 프론트엔드 개발자였지만, AI가 포함된 서비스를 접할 기회가 많았다. 변화하는 시장과 새로운 고민 최근 원티드나 잡코리아 같은 채용 사이트를 보면, 많은 회사들이 LLM(Large Language Model) 기반 사업을 활발히 진행하고 있다. 단순한 검색이나 추천 시스템을 넘어, 대화형 서비스, 데이터 요약, 지능형 상담 등 다양한 분야에서 LLM이 접목되고 있는 것 같다. ...

August 30, 2025

Tailwind CSS v4, 정리

어떤 주제로 블로그를 써볼까 고민하다가, 요즘 프론트엔드 개발을 하면서 거의 매일같이 쓰고 있는 Tailwind CSS에 대한 이야기를 해보면 좋겠다고 생각했습니다. 최근에 새로운 버전이 나왔다는 소식을 듣고, 기존에 사용하던 방식과 무엇이, 그리고 ‘왜’ 달라졌는지 궁금해졌습니다. 솔직히 이전 버전도 충분히 만족하며 사용하고 있었기에 큰 필요성을 느끼진 못했지만, 새로운 기술이 어떤 경험을 줄 수 있을지 호기심이 생겼습니다. 이번 글에서는 제가 이전에 사용하던 Tailwind CSS와 새로운 버전이 어떻게 다른지, 그리고 그 변화가 개발 경험에 어떤 영향을 미쳤는지에 대한 개인적인 경험을 공유해 보려 합니다. ...

July 31, 2025