Read more »

모두 보기

[42 글로벌프로그램] 다시 미국에 오다 - (2편)

이번 글부터는 본격적인 미국 생활과 배우고, 느낀 점에 대해 정리해봅니다. 이에 앞서 미국 생활의 계기와 과정은 이전 글 에 정리해두었습니다. 다시 기본으로 약 9시간 50분 간의 비행 인천에서 시애틀까지는 10시간이 채 걸리지 않았다. 미국 안에서도 서울과 가장 가깝다는 도시라던데, 정말 그랬다. 도착해서 처음 든 생각은 이거였다. "어? 도시가 상당히 깨끗한데?" 새로 지어진 건물이 유독 많이 보였고, 도시 미관이…

hyeon_B

[스타트업/기술] 알림함 아키텍처: Fan-out on Write vs Fan-out on Read | 비용을 '구독자 수'가 아닌 '활성 유저 수'에 비례시키기

PNG를 WebP로 바꿔 이미지 로딩을 최적화 했던 게 '읽기'의 비용을 줄이는 일이었다면, 이번엔 '쓰기'의 비용을 줄이는 이야기다. 백만 명에게 알림 하나를 보낼 때, 그 알림함을 누가 — 서버가? 클라이언트가? — 만드느냐에 따라 청구서의 자릿수가 달라진다. 지난 몇 주간 슬루스의 메시징 서버에 인앱 알림함(Inbox) 기능을 설계했다. 별것 아닌 기능처럼 보이지만, 막상 들어가 보니 분산 시스템 설…

hyeon_B

[스타트업/기술] WebP 변환을 통한 이미지 로딩 최적화 및 GCS 업로드 자동화 | PNG 대비 용량 89%, 지연 시간 82% 개선

지난번 Firebase Storage의 오버헤드를 줄이기 위해 GCP Bucket 직접 호출로 전환 하며 Latency를 한 차례 개선한 적이 있다. 당시 네트워크 홉(Hop)을 줄임으로써 유의미한 성능 향상을 이뤄냈지만, 프로덕트를 직접 사용해 보며 여전히 아쉬움이 남았다. 이미지 하나를 불러오는 데 여전히 1초 남짓한 시간이 걸리고 있었기 때문 이다. 지난번 1차례 개선 결과 페이지 이동과 동시에 매끄럽게 이미지가 렌더링되는 다른 서비…

hyeon_B

[스타트업/기술] SSoT 기반 카탈로그 시스템 설계 | 파편화된 가격 데이터의 비효율성을 극복하고 프로모션 구조 구축하기

서비스를 고도화하는 작업을 진행하면 할수록 초기에 잘 동작하는 것처럼 보였던 설계가 발목을 잡는 순간이 온다. 최근 우리 서비스의 결제 및 가격 구조를 개편하면서 이 사실을 다시 한번 뼈저리게 느꼈다. 기존에는 각 콘텐츠마다 가격을 개별적으로 설정할 수 있도록 설계되어 있었다. 하지만 본격적으로 서비스 출시를 앞두고, 프로모션을 기획해야 하는 시점이 오자 이 구조는 기술 부채로 다가왔다. 오늘은 파편화된 데이터 구조의 한계를 SSoT(Sing…

hyeon_B

[스타트업/이슈] Google Play 인앱 결제 API | "insufficient permissions" 오류

지난 시간 을 통해 만든 서버에서 구글 플레이(Google Play) 인앱 결제 영수증 검증을 위해 백엔드 서버에서 API를 호출하는 과정 중 참 황당한 에러를 마주했다. 서버 로그에 남은 에러 메시지는 다음과 같았다. error_code: "internal" error_message: "The current user has insufficient permissions to perform the requested o…

hyeon_B
게시물 더보기
검색결과 없음

Contents