스타트업

[스타트업/기술] 인앱결제 Part 3 | 검증에 성공한 뒤에 시작되는 문제들

문제 영구 실패 영수증의 무한 재전송, 남의 것인 영수증, 검사에 막히는 정당한 결제. 결정 영구 실패는 terminal 신호와 거부 행(poison pill)으로 끊고, 소유권은 uuidv5로 대조하고, 로그엔 HMAC 지문만 남기고, 막힌 결제자는 런북을 붙인 수동 적립으로 구제한다. 대가 구제는 사람의 판단에 기대고, poison pill이 Pending 결제를 영구 거부하는 결함을 만들었다. 결과 같은 uid 동시 20…

hyeon_B•

[42 글로벌프로그램] 다시 미국에 오다 - (3편/완결)

이번 편에서는 42 글로벌프로그램의 피날레, Seattle Tech Week와 프로그램을 통해 느낀 점들을 돌아보고자 합니다. 혹시 프로그램에 참여하게 된 배경과 초반부가 궁금하시다면 이전 글들을 참고바랍니다. 기회를 발견하고 참여하기까지의 과정:  [42 글로벌프로그램] 다시 미국에 오다 - (1편) 2년 만의 미국 생활과 프로그램 전반부:  [42 글로벌프로그램] 다시 미국에 오다 - (2편) 플라이휠 그렇게 다섯 주가 지나고, 6주차엔…

hyeon_B•

추리 게임 시나리오, 외주에서 자체 파이프라인으로

추리 게임 시나리오, 외주에서 자체 파이프라인으로 추리 시나리오를 한 편 늘리려면 매번 외부 제작사에 새로 발주해야 했다. 팀에는 전담 작가도, 완성된 원고를 검수할 사람도 없었기 때문이다. 게다가 우리 플랫폼에 적용되는 건 일반적인 줄글 형태의 시나리오가 아니라 정해진 스키마가 있는 데이터라 시나리오를 받은 후 재가공 작업이 필요했다.  그래서 떠올린 생각, "Agent를 통한 자동화가 가능하지 않을까" .  전체…

hyeon_B•

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

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

hyeon_B•

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

문제 토픽 브로드캐스트를 서버가 받은함에 펼치면 발송 1건의 Firestore 쓰기가 구독자 수만큼 늘어난다. 게다가 순수 토픽은 서버가 구독자가 누구인지조차 모른다. 결정 서버가 수신자를 uid로 풀 수 있는 발송(uid 지정, 세그먼트, 동의 기반 토픽)은 쓰기 시점에 서버가 펼치고, 풀 수 없는 순수 브로드캐스트( lang-* )만 앱이 열릴 때 클라이언트가 채운다. 대가 멱등성, 동의 재검증, 커서 관리를 클라이언트가 직접 …

hyeon_B•

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

문제 GCS 직접 호출로 한 번 줄였는데도 이미지 한 장에 1.39s가 걸렸다. 원인은 파일 자체였다. 에셋이 전부 무손실 PNG였고, 측정한 이미지는 477KB였다. 결정 PNG를 품질 82의 WebP로 바꾸고, 변환과 GCS 업로드(캐시 헤더, URL 맵 포함)를 셸 스크립트 두 개로 묶었다. 대가 손실 압축이라 화질이 조금 깎이는데, 얼마나 깎였는지는 재지 않았다. WebP를 못 읽는 환경을 위한 폴백도 두지 않았다. 결과 …

hyeon_B•

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

서비스를 고도화하는 작업을 진행하면 할수록 초기에 잘 동작하는 것처럼 보였던 설계가 발목을 잡는 순간이 온다. 최근 우리 서비스의 결제 및 가격 구조를 개편하면서 이 사실을 다시 한번 느꼈다. 기존에는 콘텐츠마다 가격을 따로 정할 수 있게 설계돼 있었다. 그런데 출시를 앞두고 프로모션을 기획해야 하는 시점이 오자 이 구조가 기술 부채로 돌아왔다. 이 글에서는 흩어진 가격 데이터를 SSoT(Single Source of Truth, 단일 진실 …

hyeon_B•

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

문제 결제 서버가 Google Play Developer API로 영수증을 검증할 때 "insufficient permissions"로 계속 실패했다. 시도 서버의 서비스 계정을 Play Console 사용자로 추가했지만 그대로였다. 해결 기존 인앱 상품을 비활성화하고 새로 등록하자 검증이 통과했다. 지난 글 에서 만든 서버로 구글 플레이 인앱 결제 영수증 검증 API를 호출하다가 참 황당한 에러를 만났다. 서버 …

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