새해 복 많이 받으세요! (새 탭에서 열림)

2026년 새해를 맞아 AWS는 AI 혁신을 위한 대규모 경진대회와 교육 프로그램을 발표하며 커뮤니티 지원을 강화했습니다. 이와 동시에 Graviton4 기반의 새로운 EC2 인스턴스 출시와 ECS 관리형 인스턴스 도입 등 인프라 효율성을 높이는 주요 기술 업데이트를 공개했습니다. 사용자는 이를 통해 더 강력한 컴퓨팅 성능을 확보하고, 자동화된 도구를 활용해 보안 및 시스템 복원력을 효과적으로 검증할 수 있습니다. **AI 인재 양성 및 글로벌 아이디어 경진대회** * **BeSA 멘토링 프로그램**: 'Agentic AI on AWS'를 주제로 한 6주 과정의 무료 멘토링 프로그램이 2026년 2월 21일부터 시작됩니다. * **10,000 AIdeas 공모전**: 총 25만 달러의 상금과 AWS 크레딧이 제공되는 글로벌 경진대회로, 아이디어 접수 마감은 1월 21일까지입니다. * **참가 요건**: 개발 도구로 'Kiro'를 활용해야 하며, AWS 프리티어 범위 내에서 작동하는 독창적인 애플리케이션 아이디어를 코딩 없이도 제출할 수 있습니다. **Graviton4 기반 차세대 EC2 인스턴스 출시** * **M8gn 및 M8gb 인스턴스**: AWS Graviton4 프로세서를 탑재하여 이전 세대(Graviton3) 대비 연산 성능이 최대 30% 향상되었습니다. * **네트워크 및 스토리지 가속**: M8gn은 최대 600 Gbps의 네트워크 대역폭을, M8gb는 최대 150 Gbps의 EBS 대역폭을 지원하여 데이터 집약적인 워크로드에 최적화되었습니다. **인프라 안정성 및 보안 거버넌스 강화** * **Direct Connect 복원력 테스트**: AWS Fault Injection Service(FIS)를 사용하여 Direct Connect의 BGP 장애 조치(Failover) 상황을 시뮬레이션하고 애플리케이션의 대응 능력을 검증할 수 있습니다. * **AWS Control Tower 기능 확장**: 보안, 비용, 운영 효율성을 관리할 수 있는 176개의 Security Hub 컨트롤이 새롭게 추가되어 더욱 정교한 클라우드 거버넌스가 가능해졌습니다. **Amazon ECS 관리형 인스턴스 도입** * **EC2 용량 관리 자동화**: Amazon ECS가 EC2 인스턴스의 패치, 업데이트 및 크기 조정을 직접 관리하여 인프라 운영 부담을 줄여줍니다. * **운영 편의성**: 사용자는 기반 인프라 관리에 신경 쓰는 대신 컨테이너 기반 애플리케이션 개발에만 집중할 수 있는 환경을 구축할 수 있습니다. AI 분야에서 앞서나가고자 한다면 1월 21일 마감되는 AIdeas 경진대회에 아이디어를 제출하고, 고성능 서비스가 필요한 경우 Graviton4 기반의 신규 인스턴스 도입을 검토해 보시기 바랍니다.

“생각하고 답변하는” 카카오의 하이브리드 멀티모달 언어모델, Kanana-v-4b-hybrid 개발기 - tech.kakao.com (새 탭에서 열림)

카카오가 개발한 'Kanana-v-4b-hybrid'는 단순한 이미지 인식을 넘어 논리적 추론과 자기 점검 기능을 갖춘 하이브리드 멀티모달 언어모델입니다. 이 모델은 단일 시스템 내에서 일상적인 대화와 복잡한 시각적 추론을 동시에 수행하며, 특히 한국어 특유의 섬세한 제약 조건을 정확히 이해하고 처리하는 데 최적화되어 있습니다. 이를 통해 한국어 기반의 검정고시 및 수능 문항 평가인 KoNET에서 92.8점이라는 높은 성적을 거두며 한국형 AI의 새로운 가능성을 입증했습니다. ### 하이브리드 대응을 위한 단일 모델 구조 * 직관적 응답이 필요한 일반 대화와 논리적 단계가 필요한 추론 모델을 분리하지 않고 하나의 모델로 통합했습니다. * 별도의 라우팅(Routing) 시스템 없이도 한 대화 세션 내에서 시시각각 변하는 질의 성격에 유연하게 대응할 수 있습니다. * 모델 통합을 통해 응답 톤, 포맷, 안전 정책의 일관성을 유지하며, 시스템 운영 복잡도와 유지보수 비용을 획기적으로 낮췄습니다. ### 검증 가능한 결론을 도출하는 시각적 추론 * 이미지를 단순히 설명하는 수준을 넘어, 이미지 내 정보를 종합하고 조건을 적용하여 결론을 도출하는 '시각적 추론'에 집중했습니다. * 모델 스스로 정보 종합, 추론 전개, 결과 검증, 최종 답변의 단계를 거치도록 설계되어 답변의 근거가 명확합니다. * 영수증 검산, 표 기반 조건 필터링, 이미지 기반 수학 문제 풀이 등 단순 OCR로는 해결하기 어려운 복잡한 과제에서 높은 정확도를 보여줍니다. ### 신뢰도를 높이는 자기 점검(Reflection) 메커니즘 * 자신의 추론 과정을 스스로 재검토하여 모순이나 실수 가능성을 찾아내는 자기 점검 기능을 탑재했습니다. * 복잡한 멀티모달 질의에서 발생하기 쉬운 조건 누락이나 사소한 계산 실수를 스스로 발견하고 수정하는 패턴을 보입니다. * 이러한 '자기 수정' 과정은 모델의 단순한 정확성을 넘어, 사용자가 AI의 답변을 믿고 사용할 수 있게 만드는 핵심적인 신뢰 요인이 됩니다. ### 한국어 직관을 보존하는 로컬 추론 프로세스 * '~만 제외하고', '단, ~인 경우에만'과 같은 한국어 특유의 복잡한 예외 및 조건부 표현을 번역 없이 한국어 그대로 사고합니다. * 영문 추론 과정에서 발생할 수 있는 의미 왜곡이나 정보 누락을 방지하여 한국어 질의의 의도를 끝까지 유지합니다. * 이미지 속 한국어 텍스트 정보를 다른 언어로 변환하지 않고 직접 처리함으로써 정보의 손실 없는 논리 전개가 가능합니다. Kanana-v-4b-hybrid는 높은 기술적 완성도를 바탕으로 실제 서비스 환경에서 비용 효율성과 정확성을 동시에 잡으려는 환경에 적합합니다. 특히 한국어 환경에서의 정밀한 업무 보조나 교육용 AI 솔루션처럼 정답의 신뢰도가 중요한 분야에서 이 모델의 하이브리드 추론 능력은 강력한 경쟁력이 될 것입니다.

당근은 왜 User Activation을 전사 공통 데이터 레이어로 만들었을까? | by Juyeon Park | 당근 테크 블로그 | Jan, 2026 | Medium (새 탭에서 열림)

당근은 단순한 액티브 유저(Active User) 수치만으로는 파악하기 어려운 사용자 행동의 원인과 흐름을 분석하기 위해 전사 공통 데이터 레이어인 'Activation 레이어'를 구축했습니다. 이를 통해 사용자의 활성 상태와 상태 전이를 일관된 기준으로 정의함으로써 데이터 신뢰성을 확보하고, 팀 간 중복 계산으로 인한 비용과 운영 리소스를 대폭 절감했습니다. 결과적으로 데이터 분석 환경을 쿼리 중심에서 시스템 중심으로 격상시켜 전사적인 의사결정 속도와 정확도를 높였습니다. **단순 지표를 넘어선 User Activation의 중요성** * 단순한 액티브 유저 수는 '무슨 일이 일어났는지'는 보여주지만, '왜' 일어났는지에 대한 해답을 주지 못하므로 유저를 상태별로 쪼개어 보는 관점이 필요합니다. * **활성 상태**: 특정 시점에 유저가 신규(New), 유지(Retained), 복귀(Reactivated), 이탈(Inactive) 중 어떤 상태인지 분류합니다. * **상태 전이**: 기간의 흐름에 따라 유저가 어떤 경로로 이동하는지(예: 유지 → 이탈) 파악하여 활동성 수준에 따른 구체적인 액션을 가능하게 합니다. * 이전에는 팀마다 이 기준을 각자 계산하여 신뢰도가 낮고 운영 안정성이 떨어졌으나, 이를 공통 레이어로 통합하여 해결했습니다. **신뢰성 확보를 위한 기준 행동의 고정** * 단순한 UI 로그(클릭 등)가 아닌, 비즈니스적 의미를 담은 **Fact 모델**을 기준으로 Activation을 계산하도록 설계했습니다. * 로그 내 파라미터에 따라 의미가 달라지는 혼선을 방지하기 위해, 사전에 정제된 Fact 레이어를 입력값으로 사용합니다. * `<fact_name>_activation_<time_grain>`과 같은 엄격한 네이밍 컨벤션을 적용하여 모델 이름만으로도 어떤 행동과 주기(일/주/월)를 기준으로 하는지 누구나 쉽게 알 수 있게 했습니다. **증분 모델(Incremental Model)을 통한 비용 최적화** * 수천만 명의 사용자 데이터를 매일 전체 재처리하는 방식은 비용 소모가 크기 때문에, dbt의 증분 모델 방식을 도입했습니다. * **FirstLast 모델**: 각 유저별 최초/직전/최근 활동일을 별도로 관리하여 전체 이력을 매번 스캔하지 않도록 했습니다. * **Activation 모델**: 당일 활동 유저 정보와 FirstLast 모델을 결합하여 상태와 복귀 간격 등을 계산하고, 결과를 다시 FirstLast 모델에 업데이트하는 순환 구조로 데이터 스캔량을 최소화했습니다. * **Activation Status 모델**: 활동이 없는 유저를 포함한 전체 유저의 현재 상태(특히 이탈 기간)를 관리하여 분석 편의성을 높였습니다. **dbt 매크로를 활용한 생산성 극대화** * 다양한 행동(앱 방문, 게시글 작성 등)과 시간 단위(Daily, Weekly, Monthly)별로 수많은 모델을 직접 구현해야 하는 번거로움을 매크로로 해결했습니다. * 복잡한 상태 계산 로직을 dbt 매크로로 표준화하여, 새로운 Activation 모델이 필요할 때 설정값만 입력하면 자동으로 수십 개의 모델이 생성되도록 자동화했습니다. * 이를 통해 데이터 엔지니어의 반복 작업을 줄이고, 분석가들이 필요할 때 즉시 공통 레이어를 확장할 수 있는 환경을 만들었습니다. 데이터를 단순히 쿼리 결과물로 보는 단계를 넘어, 시스템화된 '인프라'로 구축할 때 비로소 전사적인 데이터 활용도가 극대화됩니다. 당근의 사례처럼 상태 전이와 같은 복잡한 로직을 공통 레이어로 추상화하고 자동화한다면, 분석 효율성을 높이는 동시에 데이터 기반의 의사결정 문화를 더욱 공고히 할 수 있습니다.

입사 일주일 만에 일본 출장을? LINE Plus Developer Relations 뉴비의 바쁜 적응기 (새 탭에서 열림)

라인플러스 Developer Relations(DevRel) 팀에 합류한 신규 입사자의 경험을 통해 기술 중심 회사가 엔지니어의 성장을 돕고 개발 문화를 확산시키는 구체적인 과정을 보여줍니다. 저자는 입사 일주일 만에 떠난 일본 출장과 이후 진행한 다양한 사내외 행사를 통해, DevRel의 핵심 역할이 단순한 운영을 넘어 엔지니어와 기술 문화를 유기적으로 연결하는 데 있음을 강조합니다. 결과적으로 탄탄한 온보딩 프로세스와 도전적인 팀 문화가 구성원의 빠른 적응과 창의적인 업무 수행을 가능하게 한다는 결론을 도출합니다. ## 글로벌 기술 컨퍼런스와 해커톤 참여 * **Tech-Verse 및 Hack Day 운영 지원:** 일본에서 열린 글로벌 컨퍼런스 'Tech-Verse'에서 한국어, 영어, 일본어 다국어 동시통역 환경을 점검하고, 사내 해커톤인 'Hack Day'의 현장 이슈 대응 및 운영을 담당하며 글로벌 규모의 행사 체계성을 체감했습니다. * **글로벌 DevRel 협업:** 일본, 태국, 대만, 베트남 등 각국의 DevRel 팀과 주기적으로 미팅하며 국가별 기술 행사 운영 방식과 엔지니어 대상 콘텐츠 구성 사례를 공유하는 유기적인 협업 구조를 확인했습니다. * **현장 기반 테크 브랜딩:** 행사 현장에서 숏폼(Shorts) 영상과 카드 뉴스를 직접 제작 및 배포함으로써, 행사의 폭발적인 에너지를 외부로 전달하는 '테크 브랜딩' 업무의 실무적 접점을 익혔습니다. ## 참여를 이끄는 창의적인 테크 토크 기획 * **파격적인 홍보 전략:** '나의 AI 활용법'을 주제로 한 Tech Talk에서 오프라인 참여율을 높이기 위해 기존의 틀을 깬 유머러스한 포스터와 컵홀더를 제작하는 등 B급 감성을 활용한 마케팅을 시도했습니다. * **실습형 핸즈온 세션 도입:** 엔지니어들의 피드백을 반영해 ChatGPT와 Claude Code를 활용한 핸즈온 세션을 기획했으며, Jira 티켓과 Wiki를 연동한 주간 리포트 자동 생성 등 실무에 즉시 적용 가능한 기술적 사례를 다루었습니다. * **철저한 사전 기술 지원:** 실습 중 발생할 수 있는 변수를 최소화하기 위해 환경 세팅 가이드를 사전 제작하고 문제 발생 시 대응 방안을 마련하는 등 참여자 중심의 세밀한 행사 설계를 진행했습니다. ## 전사 AI 리터러시 향상을 위한 AI Campus Day * **참여 장벽 완화 설계:** '업무에서 벗어나 AI와 놀기'라는 콘셉트로 AI 포토존(Gemini 활용)과 메시지 보드를 운영하여, 약 3,000명의 구성원이 자연스럽게 AI 기술을 경험할 수 있도록 동선을 설계했습니다. * **AI 도구의 실무 적용:** 행사 안내 영상 제작 시 사내에서 지원하는 AI 툴로 아이콘을 만들고 AI 음성을 입히는 등, DevRel 스스로가 기술의 활용 사례가 되어 구성원들의 흥미를 유발했습니다. * **범조직적 협업:** 한 달 반의 준비 기간 동안 여러 부서와 협력하며 'Event & Operation' 역할을 수행했고, 이를 통해 대규모 전사 행사를 성공적으로 이끄는 운영 노하우를 습득했습니다. ## 개방적이고 도전적인 팀 문화 * **심리적 안정감과 실행력:** 신규 입사자의 아이디어를 "재밌겠다"며 지지해 주는 유연한 분위기 덕분에 파격적인 홍보나 새로운 세션 도입과 같은 시도가 실제 성과로 이어질 수 있었습니다. * **체계적인 온보딩 시스템:** 입사 직후 촉박한 출정 일정 속에서도 업무 미션과 온보딩 리스트가 잘 정리되어 있어 업무 맥락을 빠르게 파악하고 전문성을 발휘할 수 있는 환경이 조성되었습니다. 성공적인 DevRel 활동을 위해서는 기술적 이해도만큼이나 엔지니어의 니즈를 파악하는 공감 능력, 그리고 아이디어를 즉각 실행에 옮길 수 있는 개방적인 팀 문화가 필수적입니다. 조직 내 개발 문화를 활성화하고 싶다면, 구성원들이 기술을 즐겁게 경험할 수 있도록 참여 문턱을 낮추는 작은 실험부터 시작해 볼 것을 추천합니다.

끊김 없는 사용 경험을 위하여 : 카카오톡 선물함 속 교환권을 배달의민족 주문으로 연결한 여정 (새 탭에서 열림)

배달의민족 선물하기 팀은 사용자가 카카오톡으로 받은 브랜드 교환권을 배달의민족 앱에서 직접 등록하고 주문에 사용할 수 있도록 하는 '외부 교환권 연동 서비스'를 기획하고 구현했습니다. 이 프로젝트는 플랫폼 간의 기술적·비즈니스적 장벽을 허물어 사용자의 파편화된 구매 경험을 하나로 잇고, 외부의 잠재적 주문 수요를 배달의민족 생태계 안으로 흡수하는 것을 핵심 목표로 삼았습니다. 결과적으로 기술적 복잡성과 다자간의 이해관계를 극복하며 '끊김 없는 연결'이라는 사용자 중심의 가치를 실현해냈습니다. **사용자 불편 해소와 비즈니스 성장의 결합** - 카카오톡 선물을 사용하기 위해 브랜드 자사 앱을 새로 설치하거나 매장을 직접 방문해야 했던 고객의 페인포인트(Pain Point)를 해결했습니다. - 외부 플랫폼에 머물던 교환권 수요를 배달의민족 앱 내 주문으로 전환함으로써 신규 고객 유입과 락인(Lock-in) 효과를 도모했습니다. - 단순히 기능을 추가하는 것을 넘어, 플랫폼 경계를 확장하여 배달의민족을 모든 주문 경험의 통합 창구로 만들고자 했습니다. **플랫폼 간 장벽을 넘는 ‘연결’의 본질 정의** - 여러 조직이 참여하는 대규모 프로젝트에서 "플랫폼 간 장벽을 넘어 사용자에게 끊김 없는 연결을 제공한다"는 본질적인 목표를 설정하여 의사결정의 기준으로 삼았습니다. - 기술적 제약이나 비즈니스 수익성 등 이해관계가 충돌할 때마다 프로젝트의 본질을 자문하며 사용자 중심 사고를 유지했습니다. - 고립된 플랫폼 생태계를 연결함으로써 사용자에게 경험의 단절이 없는 새로운 가치를 제공하는 선례를 남겼습니다. **다자간 협업을 위한 맞춤형 소통 기술** - 카카오(플랫폼사), 브랜드사, 쿠폰 연동사 등 서로 다른 KPI를 가진 파트너들과 공통의 목표인 ‘고객 경험 개선’을 공유하며 협력을 이끌어냈습니다. - 백엔드 개발자에게는 API 응답 속도와 에러 핸들링을, 비즈니스 담당자에게는 제휴 조건과 정산 프로세스를 중심으로 설명하는 ‘맞춤형 언어’를 사용했습니다. - ‘등록·사용’(배민)과 ‘조회·승인’(연동사)처럼 서로 다른 도메인 용어와 로직을 꼼꼼히 동기화하여 시스템 간의 간극을 메웠습니다. **주도적인 문제 해결과 기술적 조율** - 단순히 요구사항을 전달하는 가교 역할을 넘어, 양사 기술팀이 합리적인 타협점을 찾을 수 있도록 API 스펙과 에러 대응 정책을 주도적으로 조율했습니다. - 다양한 외부 연동사의 시스템을 수용하면서도 배달의민족 내에서의 사용 경험을 표준화하기 위한 기술적 스펙을 정의했습니다. - 복잡한 의존 관계를 가진 작업들 사이에서 우선순위를 설정하고 일정을 관리하며 프로젝트의 항해사 역할을 수행했습니다. 이 프로젝트는 기술적 구현만큼이나 플랫폼 간의 심리적·비즈니스적 거리를 좁히는 과정이 중요함을 보여줍니다. 복잡한 시스템 연동을 앞두고 있다면, 기술 스펙에 매몰되기보다 '사용자에게 어떤 연결된 가치를 줄 것인가'라는 본질을 먼저 정의하고, 파트너의 언어로 소통하며 주도적으로 표준을 만들어가는 접근 방식이 필요합니다.

AST로 Outdated 없는 퍼널 문서 만들기 (새 탭에서 열림)

토스팀은 복잡한 판매자 입점 퍼널을 효율적으로 관리하기 위해 코드를 정적으로 분석하여 자동으로 업데이트되는 퍼널 문서를 구축했습니다. 기존의 수동 문서는 빈번한 코드 변경을 따라가지 못해 실효성을 잃었으나, `ts-morph`와 AST(Abstract Syntax Tree) 분석을 통해 코드와 100% 일치하는 흐름도를 생성할 수 있게 되었습니다. 이를 통해 개발자는 복잡한 조건부 분기와 페이지 이동 로직을 별도의 문서 작업 없이도 시각적으로 정확하게 파악할 수 있게 되었습니다. **수동 문서화의 한계와 정적 분석의 선택** * **문서의 파편화:** 수기로 작성된 다이어그램은 코드가 수정될 때마다 즉시 업데이트되지 않아 실제 동작과 문서가 불일치하는 'Outdated' 문제가 발생합니다. * **복잡한 분기 처리의 어려움:** 수십 개의 페이지와 80여 개의 조건부 분기를 시각적 도구로 일일이 표현하는 것은 휴먼 에러의 위험이 크고 관리가 불가능합니다. * **정적 분석 채택:** 런타임 분석은 모든 경로를 직접 실행해야 하는 번거로움이 있지만, AST를 활용한 정적 분석은 코드를 텍스트로 읽어 모든 잠재적 경로를 빠르고 안전하게 추출할 수 있습니다. **Navigation Edge 데이터 구조 설계** * **맥락 정보 포함:** 단순한 이동 경로(A → B)를 넘어, 이동 방식(`push` vs `replace`), 실행 조건, 쿼리 파라미터 등의 상세 데이터를 포함하는 `NavigationEdge` 인터페이스를 설계했습니다. * **추적 가능성 확보:** 코드 내 정확한 위치(`lineNumber`)와 호출 출처(`sourceType`)를 저장하여 다이어그램에서 실제 소스 코드로 즉시 연결될 수 있는 기반을 마련했습니다. **AST를 활용한 로직 추출 및 조건문 파싱** * **패턴 감지:** `ts-morph`를 사용하여 프로젝트 내 페이지 파일을 탐색하고, `router.push()` 또는 `router.replace()`와 같은 함수 호출 패턴을 감지합니다. * **상위 노드 추적:** 특정 이동 로직이 발견되면 AST의 부모 방향으로 거슬러 올라가 가장 가까운 `if`문이나 삼항 연산자의 텍스트를 추출함으로써 이동 조건(Condition)을 파악합니다. **커스텀 훅 및 URL 상수의 역추적** * **숨은 로직 탐색:** 페이지 컴포넌트 내부뿐만 아니라, `import` 구문을 분석하여 커스텀 훅 내부에 숨겨진 이동 로직까지 추적하여 데이터 누락을 방지합니다. * **상수 해독:** `URLS.FUNNEL.PAY_METHOD`와 같이 상수로 정의된 목적지를 실제 URL 경로로 변환하기 위해 상수 정의 파일을 별도로 파싱하여 매핑 테이블을 구축했습니다. **실용적인 결론** 복잡도가 높은 서비스일수록 문서와 코드의 동기화는 자동화되어야 합니다. `ts-morph`와 같은 도구를 활용해 소스 코드를 단일 진실 공급원(Single Source of Truth)으로 삼는 자동화 문서를 구축하면, 불필요한 커뮤니케이션 비용을 줄이고 퍼널 전체의 비즈니스 로직을 명확하게 시각화할 수 있습니다.

LLM을 이용한 서비스 취약점 분석 자동화 #1 (새 탭에서 열림)

토스 보안 연구팀은 구글의 'Project Naptime'에서 영감을 얻어 LLM 기반의 취약점 분석 자동화 시스템을 구축했습니다. 대용량 코드 처리, 결과의 불확실성, 운영 비용 등 실무 적용 과정에서 마주한 네 가지 핵심 기술적 난제를 단계별로 해결하며 최종적으로 95% 이상의 분석 정확도를 달성했습니다. 기술적 가능성을 넘어 실제 수백 개의 서비스에 지속적으로 적용 가능한 수준의 보안 자동화 환경을 마련했다는 점에 의의가 있습니다. **대용량 소스코드 분석을 위한 MCP 도입** * 단순히 소스코드 전체를 LLM에 입력하는 방식은 토큰 한계와 환각(Hallucination) 문제로 인해 대규모 프로젝트 분석에는 부적합했습니다. * 대안으로 RAG(검색 증강 생성)를 시도했으나 코드 간의 복잡한 연관 관계를 파악하는 데 한계가 있었습니다. * 최종적으로 MCP(Model Context Protocol)를 구축하여 LLM 에이전트가 필요할 때마다 함수 정의나 변수 사용처를 도구 호출(Tool Calling) 방식으로 자유롭게 탐색하도록 설계했습니다. **SAST 결합을 통한 분석 일관성 확보** * 동일한 코드에 대해서도 분석 결과가 매번 달라지는 LLM의 비결정성 문제를 해결하기 위해 정적 분석 도구(SAST)를 결합했습니다. * 빌드 과정이 복잡하고 무거운 CodeQL 대신, 가볍고 빠른 오픈소스 도구인 Semgrep을 활용하여 모든 입력 경로(Source)에서 위험 지점(Sink)까지의 경로를 먼저 수집했습니다. * SAST가 추출한 잠재적 취약 경로를 LLM이 집중 분석하게 함으로써 탐지 누락을 방지하고 분석의 신뢰도를 높였습니다. **멀티 에이전트 체계를 통한 비용 최적화** * 모든 코드 경로를 심층 분석할 경우 발생하는 막대한 토큰 비용을 줄이기 위해 역할을 분담한 세 가지 에이전트를 도입했습니다. * **Discovery 에이전트:** 수집된 경로 중 실제 취약점 가능성이 높은 경로를 1차로 선별하는 거름망 역할을 수행합니다. * **Analysis 에이전트:** 선별된 경로를 심층 분석하여 실제 취약 여부를 판별합니다. * **Review 에이전트:** 최종 결과를 검토하여 오탐(False Positive)을 제거함으로써 분석의 정교함을 더했습니다. **지속 가능한 운영을 위한 오픈 모델 전환** * 상용 클라우드 모델(Claude 등)의 높은 비용 문제를 해결하기 위해 직접 호스팅 가능한 오픈 모델(Open Model)로 전환했습니다. * Qwen3:30B, gpt-oss:20B, llama3.1:8B 등 다양한 모델의 ROI를 비교 분석한 결과, 취약점 분석 정확도와 도구 호출 성능이 가장 우수한 'Qwen3:30B'를 최종 선택했습니다. * 오픈 모델의 성능을 보완하기 위해 프롬프트 엔지니어링과 퓨샷 러닝(Few-shot Learning)을 적용하여 클라우드 모델 못지않은 성능을 구현했습니다. 단순히 최신 기술을 도입하는 것에 그치지 않고, 기업 환경에서 실제 운영 가능한 수준의 '비용 대비 성능'을 확보하는 것이 중요합니다. LLM 취약점 분석 시스템을 구축할 때는 모든 판단을 모델에 맡기기보다 Semgrep과 같은 전통적인 보안 도구로 분석 범위를 좁혀주고, 멀티 에이전트 구조로 단계별 필터링을 거치는 설계가 실무적으로 가장 효과적입니다.

세금 환급 자동화 : AI-driven UI 테스트 자동화 일지 (새 탭에서 열림)

토스인컴의 복잡한 세금 환급 서비스 QA를 위해 1명의 매니저가 AI를 팀원으로 활용하여 4~5명 규모의 자동화 성과를 낸 과정을 다룹니다. AI 에이전트에게 코드 작성과 설계를 맡기고 사람은 문제 정의와 검증에 집중함으로써, 5개월 만에 35개의 고난도 E2E 테스트 시나리오를 성공적으로 구축하고 운영화했습니다. 이 실험은 기술적 난도가 높은 환경에서도 AI와의 협업을 통해 자동화 효율을 극대화할 수 있음을 입증했습니다. **AI 자동화 도입 배경과 도구 구성** * 복잡한 환급 플로우(15~20단계)와 빈번한 UI/정책 변경, 외부 연동 시스템의 불안정성 때문에 전통적인 수동 자동화 방식으로는 대응이 불가능했습니다. * 메인 개발자인 Claude Sonnet 4.5를 비롯해 Cursor(IDE 페어 프로그래밍), Codex(코드 분석) 등 각기 다른 강점을 가진 AI 도구들을 조합하여 사용했습니다. * AI를 SDET 에이전트(설계), 문서화 전문가(기록), Git 마스터(형상 관리)라는 세 가지 페르소나로 분리하여 역할 분담을 명확히 했습니다. **기술적 문제 해결과 아키텍처 고도화** * **Page Object Model(POM) 도입:** 중복 셀렉터 문제를 해결하고 유지보수성을 높이기 위해 AI와 협업하여 모든 페이지 요소를 객체화하는 POM 구조를 설계했습니다. * **React 타이밍 이슈 해결:** 요소가 화면에는 보이지만 이벤트 핸들러가 바인딩되지 않아 발생하는 클릭 실패를 해결하기 위해, UI 안정화와 상호작용 준비 상태를 분리해 감지하는 'Interaction Readiness' 전략을 구현했습니다. * **Fallback 클릭 로직:** 표준 클릭 실패 시 키보드 엔터 입력, 자바스크립트 직접 클릭 순으로 시도하는 안전한 클릭 함수를 만들어 테스트의 견고함을 높였습니다. * **동적 약관 처리:** 서비스별로 상이하고 복잡한 약관 동의 플로우를 AI가 자동으로 감지하고 처리하도록 설계하여, 약관이 변경되어도 테스트가 중단되지 않는 구조를 만들었습니다. **운영 효율화를 위한 협업 시스템 구축** * **문서화 및 일지 자동 생성:** 매일 커밋 기록을 기반으로 AI가 회고 일지와 가이드 문서를 작성하게 하여, 수십 분이 걸리던 기록 업무를 1~2분 내외의 검토 수준으로 단축했습니다. * **메신저 기반 리포팅 루프:** 테스트 결과, 실패 지점 스크린샷, 오류 로그(EventID 등)를 사내 메신저에 자동으로 연동하여 개발팀과의 빠른 논의가 가능하도록 환경을 조성했습니다. * **테스트 격리 및 리팩토링:** 수천 줄의 단일 파일을 분리하고 테스트 데이터(userNo) 충돌 방지 로직을 도입하여 자동화 품질을 관리 가능한 수준으로 끌어올렸습니다. 단순히 AI에게 코드를 짜게 하는 수준을 넘어, 아키텍처 설계와 운영 프로세스 전반을 AI와 함께 고민하는 'AI-First' 접근 방식은 리소스가 제한된 환경에서 QA 품질을 혁신적으로 높일 수 있는 실질적인 해법이 됩니다. 6개월간의 여정은 AI를 도구가 아닌 실제 팀원으로 대우할 때 자동화의 본질인 '안정적인 반복 실행'을 달성할 수 있음을 보여줍니다.

WOOWACON 2025 미니게임 WOOWA POP! | 우아한형제들 기술블로그 (새 탭에서 열림)

우아콘 2025에서 선보인 '우아팝(WOOWA POP!)'은 단순한 이벤트를 넘어 기술적 무결성을 증명하기 위한 도전의 결과물입니다. 대규모 인원이 참여하는 랭킹 시스템에서 발생할 수 있는 조작 가능성을 차단하기 위해, 단순히 보안 솔루션을 덧붙이는 대신 게임의 동작 원리 자체를 보안 메커니즘으로 활용했습니다. 서버에서 클라이언트의 플레이 과정을 결정론적으로 재현하여 검증함으로써, 기술 콘퍼런스에 걸맞은 투명하고 공정한 게임 환경을 구축했습니다. ### 게임 보안과 수학적 증명 * 폰 노이만의 게임 이론에 따르면 모든 게임은 수학적 구조로 환원될 수 있으며, 해커는 이를 역공학하여 최적해(조작)를 찾아내는 존재입니다. * 기존의 보안 방식이나 CAPTCHA는 게임의 재미를 반감시키거나 AI 기술의 발전으로 인해 점차 무력화되는 한계가 있었습니다. * 수박 게임과 같은 물리 기반 퍼즐 게임은 수학적으로 NP-난해(NP-hard) 문제에 속하며, 답을 찾기는 어렵지만 주어진 답이 맞는지 확인하는 것은 쉽다는 특성을 가집니다. * 이를 이용해 사용자가 보낸 최종 점수를 그대로 믿는 것이 아니라, 점수에 도달하기까지의 '과정'을 증명서처럼 제출받아 서버에서 검증하는 방식을 채택했습니다. ### 결정론적 물리 엔진의 구현 * 서버가 클라이언트의 플레이를 정확히 재현하기 위해서는 동일한 입력에 대해 항상 동일한 결과가 나오는 '결정론(Determinism)'이 보장되어야 합니다. * 웹 환경의 `Math.sin`이나 `Math.cos` 같은 함수는 브라우저나 OS 엔진에 따라 미세한 오차가 발생할 수 있어, 이를 대체할 결정론적 수학 라이브러리를 사용했습니다. * 물리 엔진인 Matter.js를 활용하여 물체의 생성 위치, 시간(프레임), 충돌 계산 등을 정수 기반 혹은 오차 없는 계산 방식으로 통일했습니다. * 클라이언트는 사용자의 조작 로그(아이템 투하 위치, 타이밍 등)를 기록하여 서버로 전송하고, 서버는 Node.js 환경에서 이 로그를 그대로 시뮬레이션하여 최종 점수의 일치 여부를 판단합니다. ### 14,570점의 등장과 검증의 실효성 * 행사 기간 중 약 2,000명의 사용자가 참여했으며, 서버 로그를 통해 모든 플레이 과정이 실시간으로 검증되었습니다. * 운영 도중 물리적으로 도달하기 어려운 14,570점이라는 비정상적인 점수가 전송되었으나, 서버의 재현 시뮬레이션 결과 클라이언트가 보낸 점수와 일치하지 않음을 감지하여 자동으로 랭킹에서 제외했습니다. * 이는 별도의 복잡한 보안 툴 없이도 게임 엔진의 결정론적 특성만으로 완벽한 부정행위 방지가 가능함을 입증한 사례입니다. 단순히 점수 데이터를 주고받는 방식에서 벗어나, 실행 과정을 서버에서 재현할 수 있도록 설계하는 것은 게임뿐만 아니라 높은 신뢰성이 필요한 다양한 웹 시스템에 응용될 수 있습니다. 특히 결정론적 설계를 통해 클라이언트와 서버의 상태를 동기화하는 기법은 복잡한 비즈니스 로직의 무결성을 확보하는 데 매우 강력한 도구가 됩니다.

당근페이 AI Powered FDS로 가는 여정: 룰엔진구축부터 LLM 적용까지 | by HyunwooKim | 당근 테크 블로그 | Nov, 2025 | Medium (새 탭에서 열림)

당근페이는 급변하는 이상거래 패턴에 유연하게 대응하기 위해 룰엔진 중심의 FDS를 구축하고, 최근에는 LLM을 결합하여 탐지 정교화와 모니터링 효율성을 극대화하고 있습니다. 초기 룰엔진은 조건, 규칙, 정책의 계층 구조로 설계되어 실시간 탐지와 제재를 가능하게 했으며, 여기에 LLM 기반의 맥락 분석을 더해 검토 시간을 단축하고 판단의 일관성을 확보했습니다. 금융 보안 규제를 준수하면서도 최신 AI 모델을 실무에 적용해 사용자 자산을 보호하는 선도적인 FDS 운영 사례를 제시합니다. **유연한 탐지를 위한 룰엔진의 구조** * 룰엔진은 조건(빌딩 블록), 규칙(조건의 조합), 정책(규칙의 묶음)의 3단계 계층 구조로 설계되어 레고 블록처럼 탐지 로직을 조립할 수 있습니다. * '가입 후 N일 이내', '송금 횟수 N건 이상'과 같은 개별 임계값을 자유롭게 변경하며 새로운 사기 패턴에 즉각적으로 대응할 수 있는 환경을 마련했습니다. * 이벤트 유입 경로는 즉시 차단이 필요한 '동기 API'와 대량의 이벤트를 실시간으로 분석하는 '비동기 스트림'으로 분리하여 처리 효율을 높였습니다. **룰엔진 기반의 위험 평가 및 사후 처리** * 유입된 모든 거래 이벤트는 설정된 정책과 규칙에 따라 위험 평가를 거치며, 그 결과에 따라 LLM 평가, 고객 서비스팀 알람, 유저 제재 등의 후속 조치가 자동 수행됩니다. * 시스템 도입 후 실시간으로 규칙을 추가하거나 변경하며 사기 트렌드를 빠르게 반영한 결과, 금융 및 수사기관으로부터의 사기 관련 정보 요청 건수가 유의미하게 감소했습니다. * 탐지 로직의 유연화는 단순 차단을 넘어 시스템 전반의 유저 상태 동기화까지 통합적으로 관리할 수 있는 기반이 되었습니다. **LLM 도입을 통한 지능형 FDS로의 진화** * 기존의 수동 검토 방식은 건당 5~20분이 소요되고 담당자마다 판단 결과가 달라질 수 있는 한계가 있어, 이를 해결하기 위해 LLM을 통한 맥락 분석 기능을 도입했습니다. * 전자금융업의 망분리 규제 문제를 해결하기 위해 '혁신금융서비스' 지정을 받았으며, AWS Bedrock의 Claude 3.5 Sonnet 모델을 활용해 보안과 성능을 모두 잡았습니다. * BigQuery의 사기 이력을 Redis에 캐싱하고, 이를 구조화된 프롬프트(XML 태그 및 JSON 형식)에 결합하여 LLM이 사기 여부와 그 근거를 일관되게 평가하도록 설계했습니다. 효율적인 FDS 운영을 위해서는 룰 기반의 명확한 통제와 AI 기반의 유연한 맥락 분석이 조화를 이루어야 합니다. 특히 LLM을 실무에 적용할 때는 규제 준수를 위한 기술적/행정적 준비와 함께, AI가 정교한 판단을 내릴 수 있도록 단계별로 명시적이고 구조화된 프롬프트를 설계하는 과정이 무엇보다 중요합니다.

코드 품질 개선 기법 27편: 티끌이 모여 태산이 되듯 의존성도 쌓이면 (새 탭에서 열림)

의존성 주입(Dependency Injection)은 코드의 유연성을 높이는 강력한 도구이지만, 명확한 목적 없이 모든 요소를 주입 대상으로 삼는 것은 오히려 코드 복잡도를 높이고 유지보수를 어렵게 만듭니다. 참조 투명한 유틸리티나 단순한 모델 클래스까지 외부에서 주입받기보다는, 복잡도가 낮거나 변경 가능성이 희박한 객체는 내부에서 직접 생성하는 것이 더 효율적일 수 있습니다. 따라서 의존성을 주입할 때는 객체의 라이프사이클 관리, 구현체 전환, 테스트 용이성 등 구체적인 목적이 있는지 먼저 검토해야 합니다. **불필요한 의존성 주입의 사례와 개선** * **과도한 주입의 예시**: 뉴스 기사 스니펫을 생성하는 `LatestNewsSnippetUseCase` 클래스에서 데이터 모델인 `NewsSnippet`의 팩토리 함수나, 단순한 문자열 포매터인 `StringTruncator`까지 생성자로 주입받는 경우입니다. * **개선 방향**: 상태를 갖지 않는 단순한 유틸리티 구현체나 데이터 모델의 생성자는 클래스 내부에서 직접 호출하도록 변경합니다. * **단순화 결과**: 환경에 따라 달라지는 값(Locale)이나 네트워크 통신 등 복잡한 로직을 가진 리포지터리만 주입 대상으로 남겨 코드를 더 간결하게 유지할 수 있습니다. **의존성 주입이 필요한 명확한 목적** * **라이프사이클 및 범위 관리**: 객체의 상태를 공유해야 하거나, 사용하는 객체보다 더 긴 수명을 가진 객체를 활용해야 할 때 주입을 사용합니다. * **의존성 역전(DIP)**: 모듈 간의 순환 의존성을 해결하거나 아키텍처에서 정의한 계층 간 의존 방향을 준수하기 위해 필요합니다. * **구현체 전환 및 분리**: 테스트나 디버깅을 위해 Mock 객체로 교체해야 하는 경우, 혹은 빌드 속도 향상을 위해 독점 라이브러리를 분리해야 할 때 유용합니다. **무분별한 주입이 초래하는 문제점** * **추적의 어려움**: 인터페이스와 주입이 남발되면 특정 로직의 실제 동작을 확인하기 위해 생성자의 호출자를 거꾸로 추적해야 하는 수고가 발생합니다. * **호출자 책임 전가**: 하위 클래스의 모든 의존성을 상위 호출자가 해결해야 하므로, 의존성 해결이 연쇄적으로 전달되어 메인 클래스에 과도한 책임이 집중됩니다. * **연관 데이터의 일관성 파괴**: 예를 들어 동일한 `Locale` 값을 사용해야 하는 여러 객체를 각각 주입받을 경우, 실수로 서로 다른 로케일이 전달되어도 컴파일 타임에 이를 감지하기 어렵고 테스트 작성이 까다로워집니다. 의존성 주입은 '할 수 있기 때문'이 아니라 '필요하기 때문'에 수행해야 합니다. 복잡한 비즈니스 로직이나 외부 시스템 의존성은 주입을 통해 유연성을 확보하되, 단순한 값 객체(Value Object)나 유틸리티는 직접 인스턴스화하여 코드의 명확성을 높이는 것을 권장합니다.

토스의 AI 기술력, 세계 최고 권위 NeurIPS 2025에서 인정받다: FedLPA 연구 (새 탭에서 열림)

토스는 데이터 주권 문제를 해결하면서도 미지의 데이터를 효과적으로 학습할 수 있는 새로운 연합학습 알고리즘 'FedLPA'를 개발하여 세계 최고 권위의 AI 학회인 NeurIPS 2025에 게재했습니다. 이 기술은 국가별로 상이하고 라벨이 부족한 현실 세계의 데이터 분포를 클라이언트 스스로 파악하여 모델을 최적화함으로써, 개인정보를 보호하는 동시에 글로벌 서비스의 정확도를 획기적으로 높입니다. 이를 통해 토스는 규제 리스크 없는 글로벌 진출과 초개인화된 금융 서비스 제공을 위한 독보적인 기술적 토대를 마련했습니다. ### 연합학습의 도입 배경과 기존 기술의 한계 - **데이터 주권과 보안**: '페이스페이'와 같은 서비스가 해외에 진출할 때, 현지 법령에 따라 생체 데이터를 국외로 반출할 수 없는 문제를 해결하기 위해 데이터를 서버로 모으지 않고 기기 내에서 학습하는 연합학습(Federated Learning)이 필수적입니다. - **데이터 불균형(Non-IID)**: 기존 연합학습은 모든 사용자의 데이터 분포가 유사하다고 가정하지만, 실제로는 국가나 지역별로 얼굴형, 조명, 결제 패턴 등이 판이하게 달라 성능이 저하되는 한계가 있습니다. - **미지 범주 대응 불가**: 서비스 운영 중 발생하는 새로운 인종적 특성이나 신종 부정 결제 패턴(Novel Class)을 기존 기술은 '알고 있는 범주'로만 분류하려다 보니 새로운 변화에 유연하게 대응하지 못했습니다. ### FedLPA의 3단계 혁신 파이프라인 - **신뢰도 기반 로컬 구조 발견(CLSD)**: 단순히 이미지 특징을 비교하는 수준을 넘어, 모델이 확신하는 데이터(High-confidence)의 예측 결과를 활용해 데이터 간의 유사도 그래프를 정교하게 구축하고 정제합니다. - **인포맵 클러스터링(InfoMap)**: 사람이 범주의 개수를 미리 정해주지 않아도, 그래프 내에서 데이터들이 자연스럽게 뭉치는 커뮤니티를 찾아내는 알고리즘을 통해 클라이언트가 스스로 데이터 내의 범주 개수를 파악합니다. - **로컬 사전 확률 정렬(LPA)**: 모델의 예측 결과 분포가 앞서 파악한 실제 데이터의 분포(Empirical Prior)와 일치하도록 강제하는 정규화 과정을 거칩니다. 이를 통해 특정 클래스에 데이터가 쏠려 있어도 모델이 편향되지 않고 균형 잡힌 학습을 수행할 수 있습니다. ### 기술 도입에 따른 비즈니스 기대 효과 - **글로벌 진출 가속화**: 각국의 금융 및 개인정보 규제를 준수하면서도 현지 데이터를 활용한 고성능 모델을 구축할 수 있어, 기술적 진입 장벽 없이 동남아나 유럽 등 글로벌 시장에 빠르게 안착할 수 있습니다. - **초개인화 금융 서비스**: 개별 사용자의 로컬 환경과 특이 패턴을 실시간으로 학습하여, 이상거래탐지(FDS)의 정확도를 높이고 국가별 특수성을 반영한 정교한 신용평가(CSS) 모델을 운영할 수 있습니다. - **운영 효율 극대화**: 새로운 유형의 데이터가 등장할 때마다 사람이 직접 라벨링하고 재학습시키는 과정을 줄여주며, AI가 스스로 새로운 패턴을 감지하고 학습하므로 모델 업데이트 주기와 운영 비용을 획기적으로 단축합니다. FedLPA는 데이터 보안과 모델 성능이라는 상충하는 목표를 동시에 달성함으로써 AI 기술의 실질적인 비즈니스 적용 가능성을 입증했습니다. 데이터 규제가 엄격한 글로벌 환경이나 사용자마다 데이터 특성이 극명하게 다른 금융 도메인에서 AI 서비스를 운영하고자 한다면, FedLPA와 같은 자가 학습 기반의 연합학습 구조를 적극적으로 검토할 것을 권장합니다.

2025 파이썬 타이 (새 탭에서 열림)

2025년 파이썬 타입(Typed Python) 설문조사 결과, 응답자의 86%가 타입 힌트를 일상적으로 사용할 만큼 파이썬 생태계에서 타입 시스템이 핵심적인 위치를 차지하고 있음이 확인되었습니다. 개발자들은 타입 힌트를 통해 코드 가독성 향상과 버그 예방 효과를 누리고 있지만, 외부 라이브러리의 불완전한 타입 지원과 복잡한 제네릭 사용에는 여전히 어려움을 느끼고 있습니다. 향후 파이썬 타입 시스템은 TypeScript 수준의 유연한 타입 표현력과 런타임 성능 최적화를 지향하는 방향으로 발전할 것으로 보입니다. ### 높은 채택률과 경험 수준별 활용 양상 * 전체 응답자의 86%가 타입 힌트를 "항상" 또는 "자주" 사용한다고 답하여, 파이썬 개발에서 타입 시스템이 표준으로 자리 잡았음을 보여주었습니다. * 경력 5~10년 차 개발자의 채택률이 93%로 가장 높았으며, 이는 중견 개발자들이 타입 시스템의 이점을 가장 적극적으로 수용하고 있음을 시사합니다. * 반면 10년 이상의 숙련된 개발자(80%)와 2년 미만의 신입 개발자(83%)는 상대적으로 낮은 채택률을 보였는데, 이는 각각 레거시 코드베이스의 영향과 타입 시스템의 학습 곡선 때문으로 분석됩니다. ### 파이썬 타입 시스템의 주요 장점 * **점진적 채택(Gradual Adoption):** 기존 코드에 선택적으로 타입을 도입할 수 있는 유연성이 개발자들에게 가장 큰 매력으로 작용합니다. * **문서화 및 가독성:** 타입 힌트가 코드 내 문서 역할을 하여 대규모 프로젝트에서 로직을 이해하고 협업하는 효율을 높여줍니다. * **IDE 도구 지원:** 자동 완성, 정의 이동(Jump-to-definition), 인라인 타입 힌트 등 개발 환경의 생산성을 비약적으로 향상시킵니다. * **Pydantic 및 FastAPI 연동:** 런타임에 타입을 검사하고 활용하는 라이브러리와의 강력한 시너지 효과를 높게 평가했습니다. ### 현장에서 겪는 주요 기술적 난관 * **서드파티 라이브러리 지원 부족:** NumPy, Pandas, Django 등 널리 쓰이는 라이브러리의 타입 주석이 불완전하거나 부정확하여 연동에 어려움을 겪고 있습니다. * **고급 기능의 복잡성:** 제네릭(Generics), TypeVar, 공변성/반공변성(Co/Contravariance), 복잡한 콜백 함수 정의 등이 이해하기 어렵다는 의견이 많았습니다. * **도구의 파편화 및 성능:** Mypy와 Pyright 간의 검사 결과가 일치하지 않는 경우가 잦으며, 대규모 코드베이스에서 Mypy의 검사 속도가 느린 점이 페인 포인트로 지적되었습니다. * **가독성과 장황함:** 복잡한 데이터 구조에 타입을 적용할 때 코드가 지나치게 길어지고 '파이썬답지(Pythonic)' 않게 느껴진다는 비판도 존재합니다. ### 향후 요구되는 주요 기능 * **TypeScript 스타일의 기능 도입:** 교차 타입(Intersection types, `&`), 매핑 타입(Mapped types), 조건부 타입 등 더 강력한 타입 표현력을 요구하고 있습니다. * **유틸리티 타입:** TypeScript의 `Pick`, `Omit`, `keyof`와 같은 편리한 타입 조작 도구에 대한 수요가 높습니다. * **런타임 강제성 및 성능:** 타입 정보를 활용하여 런타임에 실제 성능을 최적화하거나, 타입을 강제로 검증할 수 있는 기능이 필요하다는 의견이 많았습니다. 파이썬 타입 시스템은 이제 선택이 아닌 현대적 파이썬 개발의 표준으로 진화했습니다. 신규 프로젝트라면 Pyright와 같은 최신 도구를 적극 활용하여 엄격한 타입 체크를 권장하며, 복잡한 제네릭보다는 명확한 프로토콜(Protocols)과 데이터 클래스를 활용하여 가독성과 안정성을 동시에 챙기는 전략이 실무적으로 유용합니다.

당근의 GenAI 플랫폼. 안녕하세요, 당근 Tech Core의 ML Applications팀과… | by Tommy Park | 당근 테크 블로그 | Dec, 2025 | Medium (새 탭에서 열림)

당근은 급증하는 생성형 AI(GenAI) 활용 수요에 대응하기 위해 파편화된 리소스를 통합하고 개발 효율성을 극대화하는 자체 플랫폼을 구축했습니다. LLM Router와 Prompt Studio를 통해 API 관리의 병목을 제거하고, 비개발자도 코드 없이 AI 기능을 고도화할 수 있는 환경을 마련했습니다. 이를 통해 모델 제공사의 장애나 사용량 제한에 유연하게 대처하며 서비스 안정성을 확보하고 조직 전반의 AI 활용 역량을 결집하고 있습니다. **LLM Router를 통한 AI Gateway 통합** * 여러 모델 제공사(OpenAI, Anthropic, Google 등)의 계정과 API 키를 중앙에서 관리하여 보안 우려를 해소하고 운영 프로세스를 간소화했습니다. * 팀별로 분산되어 발생하던 사용량 제한(Rate Limit) 문제를 공유 자원 풀링을 통해 해결하고, 전체 서비스의 비용과 사용량을 한눈에 파악할 수 있는 통합 대시보드를 구축했습니다. * OpenAI 인터페이스를 표준 규격으로 채택하여, 클라이언트가 모델 제공사에 관계없이 동일한 SDK 코드로 다양한 모델을 교체하며 사용할 수 있도록 설계했습니다. **Prompt Studio: 비개발자 중심의 AI 실험 환경** * 엔지니어의 도움 없이 웹 UI에서 프롬프트를 작성하고 테스트할 수 있는 환경을 제공하여 PM 등 비개발 직군의 업무 자율성을 높였습니다. * 수천 개의 테스트셋을 업로드해 결과를 한꺼번에 생성하고 정량적으로 측정하는 평가(Evaluation) 기능을 통해 프롬프트의 품질을 체계적으로 검증합니다. * 버전 관리 기능을 통해 클릭 한 번으로 최신 프롬프트를 실제 서비스에 배포할 수 있으며, 이는 엔지니어의 코드 수정 없이도 빠른 이터레이션을 가능하게 합니다. **장애 대응 및 서비스 안정성 강화** * 모델 제공사 측의 일시적인 오류 발생 시 자동으로 재시도(Retry)를 수행하여 서비스 중단을 최소화합니다. * 특정 리전의 사용량 제한이나 장애 발생 시 자동으로 다른 리전으로 요청을 우회하는 리전 폴백(Region Fallback) 기능을 플랫폼 수준에서 지원합니다. * 개별 서비스 팀이 인프라 장애 대응에 신경 쓰지 않고 비즈니스 로직 개발에만 집중할 수 있는 환경을 조성했습니다. 기업 내 GenAI 도입이 늘어남에 따라 API 키와 프롬프트 관리는 단순한 운영을 넘어 서비스의 안정성과 확장성을 결정짓는 핵심 인프라가 됩니다. 당근의 사례처럼 통합 게이트웨이와 사용자 친화적인 실험 플랫폼을 선제적으로 구축한다면, 개발 부하를 줄이면서도 조직 전체의 AI 활용 노하우를 효율적으로 축적할 수 있습니다.

초경량 클래식 형태소 분석기 개발기 - tech.kakao.com (새 탭에서 열림)

카카오는 모바일 환경의 엄격한 리소스 제한을 극복하기 위해 C++20 기반의 초경량 형태소 분석기를 직접 개발했습니다. 최신 딥러닝 방식 대신 전통적인 Viterbi 알고리즘과 LOUDS 기반의 Trie 압축 기술을 결합하여, 바이너리 크기를 200KB 수준으로 최소화하면서도 효율적인 사전 탐색 성능을 확보하는 데 성공했습니다. ### Rust 대신 C++20을 선택한 이유 * **바이너리 크기 최적화**: Rust는 현대적인 기능을 제공하지만 표준 라이브러리 포함 시 바이너리 크기가 MB 단위로 커지는 경향이 있어, KB 단위의 관리가 필요한 모바일 환경에는 부적합했습니다. * **기존 인프라 활용**: 모바일 OS 환경에 이미 포함된 C++ 표준 라이브러리를 활용함으로써 최종 결과물 크기를 약 200KB 수준으로 억제했습니다. * **현대적 문법 적용**: C++20의 `Concepts`를 사용하여 템플릿 제약을 명확히 하고, `std::span`과 `std::ranges` 등을 통해 메모리 안전성과 코드 가독성을 동시에 높였습니다. ### LOUDS 알고리즘을 통한 사전 데이터 압축 * **비트 시퀀스 기반 트리**: 트리 구조를 포인터 대신 비트열로 표현하는 LOUDS(Level-Order Unary Degree Sequence)를 채택하여 메모리 사용량을 정보 이론적 하한에 가깝게 줄였습니다. * **높은 압축률 달성**: 약 76만 개의 노드를 가진 방대한 사전 데이터를 단 9.4MB로 압축했으며, 이는 일반적인 CSV 방식 대비 훨씬 효율적인 수치입니다. * **한글 최적화 인코딩**: 한글을 2바이트로 처리하고 외국어는 플래그로 구분하는 등 별도의 내부 인코딩 방식을 적용하여 사전의 물리적 크기를 추가로 절감했습니다. ### Select 비트 연산 최적화와 성능 개선 * **병목 지점 파악**: LOUDS 구조에서 특정 노드의 위치를 찾는 `select0` 연산이 전체 사전 탐색 시간의 약 90%를 점유하는 성능 병목임을 확인했습니다. * **인덱싱 기반 탐색**: 비트 시퀀스를 64비트 청크로 나누고 각 구간까지의 '0의 누적 개수'를 미리 기록하여, 바이너리 서치를 통해 탐색 범위를 획기적으로 좁혔습니다. * **비트 병렬 처리**: 청크 내부에서는 비트 연산과 시프트를 조합한 병렬 카운팅 기법을 활용하여 하드웨어 수준에서 연산 속도를 극대화했습니다. ### 실용적인 결론 모바일 클라이언트 환경처럼 리소스가 극도로 제한된 곳에서는 무거운 딥러닝 모델보다 최적화된 클래식 알고리즘이 더 강력한 대안이 될 수 있습니다. 특히 LOUDS와 같은 정적 트리 압축 기법과 비트 수준의 연산 최적화를 결합하면, 성능 손실 없이도 극적인 용량 절감이 가능함을 이 개발 사례가 증명하고 있습니다.