긴 회의 스크립트 화면의 느린 렌더링을 가상화로 개선하기
·
웹 프론트엔드
저는 실시간 AI 회의록 서비스 HeyMoa를 개발하고 운영하고 있습니다. HeyMoa는 회의에서 오간 말을 글로 옮긴 스크립트와 요약을 보여 줍니다. 요약에서 인용한 부분을 누르면 그 대화가 나온 스크립트 줄로 이동할 수 있습니다. 긴 회의의 스크립트를 열 때는 화면이 나타나기까지 시간이 걸렸습니다. 실제 긴 회의 한 건의 기록은 8천 줄을 넘었습니다. 데이터를 받아 오는 과정이 느린 것인지, 받은 내용을 브라우저가 그리는 데 시간이 걸리는 것인지 나눠 살펴봤습니다. 이 글에서는 목록 가상화를 적용해 긴 스크립트의 렌더링 비용을 줄인 과정을 정리합니다. 전체 데이터를 받아 오는 구조를 유지하면서 근거 이동과 검색 등 기존 기능을 어떻게 조정했는지도 살펴봅니다.데이터를 받는 시간과 화면을 그리는 시간당시..
Spring에서 Transactional Outbox를 구현하며 고려한 점들
·
서버
저는 실시간 AI 회의록 서비스 HeyMoa를 개발하고 운영하고 있습니다. 회의 내용을 실시간으로 정리하고 관련 내용을 안건으로 묶어 이전 회의와 연결하는 서비스입니다. HeyMoa에서는 Spring 서버가 회의 분석을 요청하고 별도의 AI 서버가 이를 처리합니다. 분석 작업을 비동기로 전달하기 위해 SQS를 사용합니다. DB에 분석 요청을 저장하는 일과 SQS에 메시지를 보내는 일은 하나의 트랜잭션으로 묶이지 않습니다. 둘 중 하나만 성공하거나 전송 도중 서버가 종료되더라도 다시 처리할 수 있도록 Transactional Outbox 패턴을 적용했습니다. 이 글에서는 HeyMoa에 Transactional Outbox 패턴을 적용하면서 고민했던 내용을 정리합니다. 커밋 이후 비동기로 발행하는 방법부터 ..
인스타그램/스레드 광고 유입의 구글 로그인 이탈 줄이기
·
마케팅
저는 웹과 데스크탑 앱을 지원하는 실시간 AI 회의록 서비스 HeyMoa를 개발하고 운영하고 있습니다. 인스타그램과 스레드에 서비스를 알리면서 링크를 누른 사람들이 실제로 로그인까지 마치는지 제품 분석 도구인 PostHog로 살펴봤습니다. 로그인을 시작한 기록은 있는데 완료 기록은 없는 경우가 눈에 들어왔습니다. 서비스에 관심이 없었던 것인지, 사용하려다가 막힌 것인지 궁금했습니다. 그래서 접속 환경부터 확인했습니다.같은 링크, 다른 로그인 환경인스타그램이나 스레드에서 링크를 누르면 Safari나 Chrome 대신 앱 안에서 웹페이지가 열릴 수 있습니다. 이 환경이 인앱 브라우저입니다. 평소 브라우저에 Google 계정으로 로그인해 두었더라도 인앱에서는 계정을 다시 입력하거나 추가 인증을 거쳐야 할 수 ..
Next.js에서 SSR/CSR timezone 불일치가 만든 Hydration 예외, Cookie로 timezone 동기화해서 해결하기
·
웹 프론트엔드
이 글은 React 19, Next.js 16, App Router를 기준으로 설명합니다.글에서 설명하는 코드 예시는 설명을 위해서 간단하게 작성했습니다.문제 상황글로벌 서비스를 개발하면서 서버에서 날짜를 어떻게 내려줄지 고민했습니다. Java의 LocalDateTime은 타임존 정보를 포함하지 않아, 서버의 실행 환경(OS 타임존 설정 등)에 따라 같은 값이 서로 다른 시점을 의미하게 될 위험이 있습니다. 반면 Instant는 UTC 기준의 절대 시각을 나타내기 때문에 어느 환경에서든 동일한 시각을 보장합니다. 글로벌 사용자를 대상으로 하는 서비스라면 서버는 Instant로 내려주고, 브라우저에서 사용자의 timezone에 맞게 포맷하는 것이 자연스러운 선택이었습니다. 구현은 단순해 보였습니다. 서버에..
의사결정 기록 MCP 구현하기 (테크 스펙, 기획, 인프라 등)
·
협업
보호되어 있는 글입니다.
선착순 쿠폰 발급 시스템 개선과 정합성 문제 해결 (Redis·Kafka)
·
서버
🔷 들어가며안녕하세요. 이번 글에서는 B2B 쿠폰 솔루션인 굿폰 서비스를 개발하며 겪었던 선착순 쿠폰 발급의 성능 개선 과정과, 그로 인해 발생한 데이터 정합성 문제를 해결한 경험을 공유하려 합니다. 굿폰은 커머스 서비스를 운영하는 고객사가 자체 개발 없이도 손쉽게 쿠폰 및 프로모션 기능을 도입할 수 있도록 돕는 서비스입니다. 시스템은 크게 관리자용 Dashboard와 고객사 커머스 서비스 서버와 연동되는 Partner OpenAPI로 구성됩니다.Dashboard: 고객사 관리자가 계정과 상점을 생성하고, 쿠폰 템플릿 발행 및 관리하는 시스템입니다. 사용자별/주문별 쿠폰 내역을 조회하여 효율적인 운영을 지원합니다.Partner OpenAPI: 고객사의 커머스 서비스와 직접 연동되는 API 서버입니다. ..