안녕하세요 VI Engineering 팀 김윤제입니다. Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 예전부터 쓰고자 한 내용들이 많았는데 귀차니즘이 심해서 이렇게 한 번에 몰아서 쓰게 되네요. 이번 편은 지난 편 설계란 고민의 연속이다 1편에 이어 2편입니다. https://dev.gmarket.com/104 1편을 보신 후에 2편을 보시는 게 많은 이해가 될 것입니다. (안 보시면 이해가 안 갈 수도 있어요) 자세한 이야기는 아래에서 상세히 다루도록 하겠습니다. 최선은 무엇인가! 어떤 설계가 좋은 설계인지 모듈 설계를 AS-IS와 비교하며 하나씩 살펴보도록 하겠습니다. 배송 모듈 지마켓에는 배송 타입이 스마일..
안녕하세요 VI Engineering 팀 김윤제입니다 Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 저는 현재 기존의 Gmarket Mobile App VIP API 시스템과 Mobile Web VIP API 시스템을 통합 & 개편하는 VIP 모듈화 프로젝트를 진행하고 있으며, 그중 모듈 비즈니스를 담당하고 있습니다. 이번 편에서는 제가 셀 수 없이 많은 시간 동안 고민한 비즈니스 설계를 소개하려고 합니다. (하도 고민을 많이 해서 탈모가 생겼다는 썰이..) 자세한 내용은 아래에서 설명하도록 하겠습니다. Hexagonal Architecture 우선 프로젝트 구조를 먼저 설명드리려고 합니다. 모듈 비즈니스는 Mu..
안녕하세요 VI Engineering 팀 김윤제입니다. Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 이번 블로그는 개발자를 잠 못 들게 만드는 코드 (잠 못 드는 밤 Feat: 내 전화를 받아 by Noc) 편입니다. Noc란 지마켓에서 관제 시스템 쪽에 근무하시는 분들입니다. (항상 감사합니다.) 저는 지마켓에서 실시간 트래픽을 맞으며 결제 지표에 영향을 주는 도메인을 맡고 있어서 장애와 아주 가까이에 있습니다. 그렇기 때문에 관제 시스템 측으로부터 연락을 많이 받습니다. 심지어 장난으로 저의 별명은 인간 SWAT이며 개인 프로필 사진입니다. 과연 어떤 코드가 개발자를 잠 못 들게 만드는지 알아보도록 하겠습니..
안녕하세요. 이번 포스트는 쿠버네티스 오퍼레이터를 직접 구현해 보고, 개발한 오퍼레이터를 로컬 쿠버네티스 클러스터에 적용하는 과정까지 설명드리려고 합니다. 예전에 지형님이 소개했었던 쿠버네티스 오퍼레이터 적용하기를 본 독자들이 있을 겁니다. 오퍼레이터는 커스텀 리소스(Custom Resource, CR)를 사용하여 미리 구성된 리소스들(Deployment, Service 등)을 관리하는 쿠버네티스 익스텐션 리소스입니다. 커스텀 리소스 정의(Custom Resource Definition, CRD)를 통해 내가 만들고 싶은 커스텀 리소스의 스펙을 정의하고 오퍼레이터를 통해 커스텀 리소스의 세부 로직들을 수행합니다. 나만의 오퍼레이터를 직접 구현하기 위해 프로그래밍 언어별 SDK들이 몇 개가 있습니다. Op..
안녕하세요 VI Engineering 팀 김윤제입니다. 저는 현재 Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 올해 6월 Gmarket Mobile Web Vip Backend 쪽의 성능을 최대 9배, 평균 5배를 개선하였습니다. 개선 직후 BXE 실 & 팀장님께 발표를 하고 회사 블로그에 글을 작성해야지 하면서 미루다가 지금은 어느덧 12월이 되었네요. 작업을 시작했을 때만 생각해도 막막했었는데 성공적으로 끝내니 그 기분은 이루 말할 수 없습니다. 자세한 이야기는 아래에서 상세히 다루도록 하겠습니다. View Item Page 성능개선 설명에 앞서 제가 맡고 있는 Vip (View Item Page) 파트에 ..
안녕하세요, Shopping Service API팀 강희정입니다. 이번 글에서는 Kotlin에서 리스트를 추출하는 메서드에 대해 다뤄보고자 합니다. 비교적 가벼운 내용이긴 하겠지만, 비슷하면서 다른 기능을 하는 메서드들을 정리해야 할 필요가 있다고 생각되어 글을 작성하게 되었습니다. Kotlin을 사용하는 사람들은 대부분 프로그래밍을 처음 접해보는 사람들이 아니라 다른 언어, 특히 Java를 주 언어로 사용하던 사람들일 텐데요, Java 개발자라면 리스트의 부분 리스트를 구해야 할 때 자연스레 subList 메서드를 사용해야겠다! 라는 생각이 드리라 예상됩니다. 실제로 subList는 Kotlin에서 지원하는 메서드기에, Kotlin에 익숙하지 않은 Java 경력의 개발자들은 한 치의 의심도 없이 sub..
0. 들어가며 안녕하세요. Vertical Engineering 팀에서 백엔드 엔지니어로 일하는 이지민입니다. 지마켓에서는 지난 7월에 실시간 가격비교가 가능한 렌터카 예약 서비스를 출시했습니다. 본 글을 통해 지마켓 내에서 신규 여행 플랫폼을 구축하면서 고민했던 점들을 공유드리고자 합니다. 글은 먼저 오픈마켓에서 여행 도메인이 지닌 어려움을 소개한 후, 이를 해결하기 위해 적용한 MSA 패턴을 살펴보는 순으로 진행하겠습니다. 1. 오픈마켓에서 여행 플랫폼의 특징 오픈마켓에서 여행 상품을 판매하는 것은 배송 상품과 비교했을 때, 크게 3가지가 다릅니다. 예약을 대행한다. 예약은 시간을 사고파는 것이다. 여행 상품은 상품군에 따라 고객에게 제공하거나, 받아야 하는 정보의 편차가 크다. 이러한 차이점은 개발..
안녕하세요. 저는 Club & Discount Engineering 팀에서 지마켓 할인/쿠폰 개발 업무를 맡고 있는 윤영택입니다. 저는 올해 상반기에 G마켓 쿠폰적용가 개발에 참여했으며, 그 과정을 본 포스팅을 통해 나누어보고자 합니다. 들어가며 먼저 G마켓 쿠폰적용가 도입 전/후를 직접 눈으로 보면서 비교해보겠습니다. G마켓 쿠폰적용가 도입 전) 여러분은 G마켓을 어떤 이유로 사용하시나요? 딱 하나만 뽑자면 단연코 폭넓고 다양한 쿠폰 할인 혜택이라고 할 수 있을 것입니다. 그러나 이와 같은 강점에도 불구하고 소비자들은 온전한 혜택을 누리지 못하고 있었고, 오히려 쿠폰 사용에 있어 불편함을 겪어야 했습니다. 가장 먼저 고객들은 상품 상세 페이지 진입 시 쿠폰을 포함한 할인가를 곧바로 확인할 수 없었습니다..