iOS에서 이벤트 기반 URL 요청이 잘 전송되는지 확인하기 (feat. 광고 트래킹.. 제대로 가고 있나요?)
안녕하세요 지마켓 Mobile Application Team 강수진입니다.오늘은 iOS에서 특정 이벤트에 대한 URL 요청이 정상적으로 이루어졌는지 확인하는 방법에 대해 알아보겠습니다.들어가기 전에모든 서비스에서 광고는 중요합니다. 왜냐하면 수익과 직결되기 때문이죠 💵💵지마켓도 곳곳에 다양한 유형의 광고가 포함되어 있는데요! 일례로 사용자가 광고 상품을 클릭하면, 해당 이벤트가 광고 처리 시스템으로 전송되어 광고가 집계되고, 이에 따라 비용이 청구될 수 있습니다.요구 사항광고 트래킹은 수익과 직결되기 때문에 문제가 생기면 최우선 순위로 대응해야 하는 이슈 중 하나입니다.그런데 코드 수정을 하다가 기존의 트래킹 코드가 동작을 안 하는 상황이 발생한다면요..?? 심지어 이런 데이터 트래킹의 이슈는 일반적..
BackendMobileSecurity
전체 읽기 →RSS로 누구보다 빠르게, 그리고 자동으로 새 소식 가져오기
안녕하세요.Pricing Tech Engineering팀원이자 해당 테크블로그의 에디터장을 담당하고 있는 김민우입니다.본격적인 글에 앞서 이번에 작업한 테크블로그 UI 변경 건을 잠깐 소개해드립니다. G마켓 테크블로그는 티스토리를 기반으로 제작되었으며, 티스토리에서 제공하는 HTML과 CSS를 직접 수정하는 '스킨 편집'을 통해 홈페이지를 변경하였습니다. (아래는 개편 이전의 스킨입니다.) 1. 전체적인 홈 디자인 변경 • 신규 로고 제작 후 적용 • 카테고리 상단 추가 및 썸네일 이미지 및 애니메이션 추가로 콘텐츠 가독성 강화. - 기존에 다소 밋밋했던 블로그 메인 페이지를 전면적으로 개편하였습니다. - 특히, 썸네일 이미지를 활용해 글의 주요 내용을 간략히 요약할 수 있도록 구성하여 독자들..
FrontendToolsUX/UI
전체 읽기 →Windows Container 에 대해 알아보기
안녕하세요 Dev Platform & Corporate IT팀 팀 박진규입니다.이번 포스팅에서는 Windows Container에 대한 내용을 공유드리려 합니다.제가 담당하는 서비스들 중에서는 Windows OS에 종속적인 서비스들이 존재하는데,(ex. net framework)어느 날 이러한 서비스들을 Container 위에서 동작시킬 수 없을까 의문이 들었습니다.일반적으로 Container는 Linux 기반이다 보니,Windows에서는 이를 어떻게 해결할 수 있을까 찾아보던 도중Windows Container에 대해 알게 되었고,이에 대한 내용을 정리해서 공유드립니다.Windows Container 란?Windows 어플리케이션을 Windows Server 환경에서 격리하여 실행하기 위한 기능입니다...
BackendDevOpsInfra
전체 읽기 →Redis Vs Mongo DB By Item View Count (이 상품 몇명이 보고 있어요)
안녕하세요 저는 VI Engineering 팀 김윤제입니다.Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다.이번 블로그에서는 개인적으로 상품 상세 페이지에 넣고 싶었던현재 이 상품 몇 명이 보고 있어요 기능을 혼자 공부하며 개발해보는데 있어서어떻게 설계를 해야 최적의 성능을 낼 수 있을지 고민하였고 그 과정을 설명드리려고 합니다.자세한 내용은 아래에서 살펴보도록 하겠습니다.동작 과정요구사항은 다음과 같았습니다.상품 별로 중복되지 않은 사용자가 몇 명이 보고 있는지 실시간으로 집계하여 보여준다.현재 이 상품 몇 명이 보고 있어요 기능의 동작 과정은 다음과 같습니다.사용자가 웹 또는 앱을 통하여 상품 상세 페이지에 접속..
BackendDatabaseInfraTools
전체 읽기 →오픈마켓 여행 플랫폼의 실전 API 연동 노하우
안녕하세요. Vertical Engineering 팀의 이지민입니다.지마켓의 여행 플랫폼은 작년에 포스팅한 오픈마켓에서 여행 플랫폼으로 살아남기에서 소개드린 바 있습니다.여행 플랫폼은 지마켓의 커머스 시스템과 OTA(온라인 여행사 제휴업체) 서버의 API를 통합하여 서비스를 제공합니다. 이처럼 여러 서버와 의존성이 높아, 서비스의 복잡도가 높습니다. 특히, 실시간 API 연동을 요구하여, 견고하게 API를 호출해야 하는 비즈니스 도메인은 다음과 같습니다.여행 상품 상세 페이지실시간 예약이번 글에서는 여행 상품 상세 페이지와 실시간 예약의 주요 특징과 고려 사항에 대해 설명하고자 합니다.(1) 여행 상품 상세 페이지여행 상품 상세 페이지는 내결함성(fault tolerance)이 높아야 하는 화면입니다. ..
ArchitectureBackendDevOpsTools
전체 읽기 →jcenter, 이제 문 닫습니다
안녕하세요. Mobile Application 팀 전계원입니다.어느 날 Android 개발 중 jcenter 에 있는 경고 문구를 확인하였습니다.이에 궁금증을 가지고 jcenter 와 관련하여 찾아본 이런저런 내용들에 대해 공유드리고자 합니다. 0. 프롤로그 - jcenter() 코드에 그어진 한 개의 줄 Android Studio 의 다크테마 속에서 jcenter() 코드가 노랗게 반짝이고 있었습니다.마우스를 올려보니 "jcenter maven repository 는 update 를 제공하지 않는다" 라고 쓰여있었습니다. jcenter 에 대체 무슨 일이 있었던 것일까요?1. Gradle 저장소에서 사라진 jcenter 의 흔적https://docs.gradle.org/current/userguide/..
BackendMobileTools
전체 읽기 →Redis Stream 적용기
안녕하세요 Data Product 팀 박상우입니다. 이번에 제가 소개해드릴 내용은 팀 내 session Info data 적재 및 API 서비스 구축에 적용한 Redis Stream에 대한 이야기입니다. 저희 팀에서는 User의 행동 정보를 수집하는 프레임워크 중 하나인 montelena receiver를 통해 수집한 데이터 (view, event, impression 등)를 post Processor라는 데이터 파이프라인 application을 통해 적재, 가공해서 각종 지표 트래킹 및 분석에 활용할 수 있도록 제공하고 있습니다. 그중 유니크한 active user를 식별하기 위해 session_id를 발급하고, 그 히스토리를 남겨 광고에 활용하고 있는데,'Big Smile Day' (지마켓 최고의 ..
BackendDatabaseTools
전체 읽기 →쿠버네티스 오퍼레이터를 Java로 개발해보기
이전 포스트: 쿠버네티스 오퍼레이터를 Golang으로 개발해보기 안녕하세요.Cloud Strategy팀 박규민입니다. 지난번에 Golang으로 쿠버네티스 오퍼레이터를 간단하게 만들어 봤습니다. 하지만 국내에서는 아무래도 Golang보다는 Java의 수요가 압도적으로 많은데요. 이번 포스트로 Java로 오퍼레이터를 구현하는 과정을 보여드리겠습니다. Java Operator SDKJava Operator SDK는 Kubernetes Client Java API인 fabric8io를 기반으로 작성되어 있습니다. 이는 세부적으로 쿠버네티스와 상호 작용하기 위한 Low Level 단에서의 코드 작성 걱정 없이 개발자에게 친숙한 Java API를 사용하여 오퍼레이터를 쉽게 작성할 수 있도록 설계되어 있습니다...
BackendDevOpsTools
전체 읽기 →신규 서비스 "꿀템"을 만들기 위한 여정(네? 다음달까지요?) -2편
안녕하세요. Web Frontend팀 이민하입니다. 지난 편에서 꿀템 서비스를 기획하고 필요한 개념들의 이름을 지어주며 이를 바탕으로 데이터베이스를 설계해 보았습니다. 이번 편에서는 어떤 기술 스택을 선택했는지 소개하도록 하겠습니다. 기술 스택 선택과 개발 External 망에는 기존에 BSD 프론트엔드 영역 어플리케이션들이 있습니다. node.js와 경량 웹프레임워크인 fastify로 되어있습니다. 프론트에서 api를 호출하면 attraction 집계 어플리케이션이 메인 데이터 저장소인 Oracle DB에서 데이터를 조회해 옵니다. 구매내역, 링크루 등 외부 api를 호출한 결과도 전달해 줍니다. 저장된 데이터는 Admin화면을 통해 관리할 수 있습니다. 누가 어떤 피드를 작성했고 누가 좋아요 버튼을 ..
BackendDatabaseFrontendTools
전체 읽기 →신규 서비스 "꿀템"을 만들기 위한 여정(네? 다음달까지요?) -1편
안녕하세요. Web Frontend팀 이민하입니다. 지난 빅스마일데이에 첫 론칭한 꿀템 피드 서비스! 이 서비스를 만들기 위한 여정을 여러분께 소개드리려고 합니다. Intro시작은 디지털 빅세일이 끝난 2월 말.. 저희 팀장님의 한마디에서 시작했습니다."챗GBT를 우리만 보기에 아깝지 않아..!?"챗GBT(Gmarket Best iTem)는 임직원분들이 직접 추천하는 상품을 모아둔 페이지로 하나하나가 진짜 꿀템입니다! 아깝다고 생각했습니다. 저도 GBT를 보며 많이 샀기 때문에 고객도 이 페이지를 같이 보면 구매가 많이 일어날 것이라고 생각했습니다.추가로 고객들이 게시글을 작성할 수 있다면..? 그러면 고객들이 우리 사이트에서 놀 수 있는 공간이 되지 않을까?또한 사내에서도 우리 프러덕에 커뮤니티 기능을..
AI/MLCultureFrontendTools
전체 읽기 →조회 속도 개선하기 (ESM '문의하기' 기능 개편)
안녕하세요.Seller & SD Engineering팀의 김민우입니다. 이번 글은 ESM(지마켓 판매자 사이트) 개편 중 '문의하기' 개발을 맡으며 겪었던 어려움과 이를 해결해 나가는 몇 가지 방법들을 소개하고자 합니다. 제가 개발 맡은 부분은 판매자에게 구매자의 문의내용을 담당하는 '게시판 문의', 그리고 CS(고객센터)에서 주는 '긴급 메시지'를 통합하여 지마켓과 옥션 두 사이트에 대해 각각 보여주는 통합 페이지를 개편시키는 일이었습니다. 각설하고 조회 성능을 올린 결과물부터 영상으로 보시죠. 영상에서 보셨듯이, 대형 셀러의 경우 한 페이지를 로드하는 데 기본 몇십 초가 걸립니다. 페이지를 넘길 때조차 마찬가지입니다. 상품이 많아질수록 문의도 증가하기 마련인데, 모든 문의에 일일이 답변하기는 어..
BackendDatabaseDevOps
전체 읽기 →경력 입사자의 스크럼 스프린트 적응기 (with Jira software)
⚠️ 본 글은 스크럼 표준 이론을 설명하는 것이 아닙니다. 안녕하세요. Dev platform 팀 임진욱입니다.지마켓의 Jira, Wiki, GIthub, CI/CD 시스템을 담당하고 있습니다. 지마켓으로 이직 후, 1년간 업무를 진행하며 스크럼을 사용하는 경험기를 다룹니다.(👉 스크럼에 대해서 더 알고 싶은 사람은 스크럼 설명 - Jira software 문서를 참고하면 도움이 됩니다.)스크럼이란?스크럼은 팀이 일련의 가치, 원칙 및 관행을 바탕으로 작업을 구조화하고 관리할 수 있도록 지원하는 애자일 프로젝트 관리 프레임워크입니다.스크럼은 팀이 경험을 통해 배우고, 문제를 해결하면서 스스로 구성하며, 얻은 것과 잃은 것을 되돌아보며 지속적으로 개선하도록 유도합니다. 시스템 관리 엔지니어로서 연속적..
CareerDevOpsTools
전체 읽기 →가상화에 대한 짧은 단상
지마켓 정보보안실 김용재 IT세상에는 가상화에 관련된 개념이 아주 많이 존재한다고 본다. 컴퓨터의 기본 구조에서 보면, 메모리가 아주 귀했을 때 나왔을 거 같은 디스크와 메모리를 섞어 사용하는 가상 메모리부터, 반대로 하드 디스크(SSD)가 현재에 비해 아주 느렸을 때 잠시 나왔던 메모리를 디스크로 사용하는 램 디스크(이건 요즘 Redis 등 예전에 비해 많이 싸진 메모리를 기반으로 빠르게 동작하는 디비의 롤 모델라는 느낌도 든다), 예전에 CD를 이용해 게임이나 프로그램을 실행하던 때에 느린 CD 대신 디스크의 이미지로 해당 데이터를 옮겨서 CD 인 것처럼 프로그램을 속였던(아무래도 그때는 CD를 강제한 불법 복제 방지 로직을 피하는 목적들도 있었다) “Virtual CD, DAEMON Tools,..
InfraSecurityTools
전체 읽기 →Gmarket Mobile Web Vip 악성 봇 대침투 사건
안녕하세요 저는 VI Engineering 팀 김윤제입니다.Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 올해 1월 6일부터 Gmarket Mobile Web Vip에 악성 봇 트래픽 유입에 따른 서비스 다운이 주기적으로 발생했었는데요.한 달 정도 평일, 주말 밤 낮 없이 원인을 찾기 위해 모니터링을 하며 끝나지 않을 것만 같던 고통(왜 나에게만 이런 일이)을 받았었습니다. 우선 악성 봇으로 판단이 되자마자 서버의 Scale Up을 하고 Scale Out을 하였으나이것은 임시방편으로 추후에 봇이 들어오는 케이스가 달라지면 또다시 발생할 문제였습니다.이에 근본적인 해결책을 고민하다 Gmarket Mobile Web..
BackendDevOpsInfraSecurity
전체 읽기 →설계란 고민의 연속이다 2편
안녕하세요 VI Engineering 팀 김윤제입니다. Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 예전부터 쓰고자 한 내용들이 많았는데 귀차니즘이 심해서 이렇게 한 번에 몰아서 쓰게 되네요. 이번 편은 지난 편 설계란 고민의 연속이다 1편에 이어 2편입니다. https://dev.gmarket.com/104 1편을 보신 후에 2편을 보시는 게 많은 이해가 될 것입니다. (안 보시면 이해가 안 갈 수도 있어요) 자세한 이야기는 아래에서 상세히 다루도록 하겠습니다. 최선은 무엇인가! 어떤 설계가 좋은 설계인지 모듈 설계를 AS-IS와 비교하며 하나씩 살펴보도록 하겠습니다. 배송 모듈 지마켓에는 배송 타입이 스마일..
ArchitectureBackendTools
전체 읽기 →설계란 고민의 연속이다 1편
안녕하세요 VI Engineering 팀 김윤제입니다Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 저는 현재 기존의 Gmarket Mobile App VIP API 시스템과 Mobile Web VIP API 시스템을통합 & 개편하는 VIP 모듈화 프로젝트를 진행하고 있으며, 그중 모듈 비즈니스를 담당하고 있습니다. 이번 편에서는 제가 셀 수 없이 많은 시간 동안 고민한 비즈니스 설계를 소개하려고 합니다.(하도 고민을 많이 해서 탈모가 생겼다는 썰이..)자세한 내용은 아래에서 설명하도록 하겠습니다. Hexagonal Architecture우선 프로젝트 구조를 먼저 설명드리려고 합니다.모듈 비즈니스는 Multi Mo..
ArchitectureBackendMobile
전체 읽기 →개발자를 잠 못 들게 만드는 코드
안녕하세요 VI Engineering 팀 김윤제입니다.Gmarket Mobile Web Vip(View Item Page = 상품 상세)를 담당하고 있는 Backend Engineer 입니다. 이번 블로그는 개발자를 잠 못 들게 만드는 코드 (잠 못 드는 밤 Feat: 내 전화를 받아 by Noc) 편입니다.Noc란 지마켓에서 관제 시스템 쪽에 근무하시는 분들입니다. (항상 감사합니다.) 저는 지마켓에서 실시간 트래픽을 맞으며 결제 지표에 영향을 주는 도메인을 맡고 있어서 장애와 아주 가까이에 있습니다.그렇기 때문에 관제 시스템 측으로부터 연락을 많이 받습니다.심지어 장난으로 저의 별명은 인간 SWAT이며 개인 프로필 사진입니다.과연 어떤 코드가 개발자를 잠 못 들게 만드는지 알아보도록 하겠습니다.try..
BackendDevOpsTools
전체 읽기 →쿠버네티스 오퍼레이터를 Golang으로 개발해보기
안녕하세요. 이번 포스트는 쿠버네티스 오퍼레이터를 직접 구현해 보고, 개발한 오퍼레이터를 로컬 쿠버네티스 클러스터에 적용하는 과정까지 설명드리려고 합니다. 예전에 지형님이 소개했었던 쿠버네티스 오퍼레이터 적용하기를 본 독자들이 있을 겁니다. 오퍼레이터는 커스텀 리소스(Custom Resource, CR)를 사용하여 미리 구성된 리소스들(Deployment, Service 등)을 관리하는 쿠버네티스 익스텐션 리소스입니다.커스텀 리소스 정의(Custom Resource Definition, CRD)를 통해 내가 만들고 싶은 커스텀 리소스의 스펙을 정의하고 오퍼레이터를 통해 커스텀 리소스의 세부 로직들을 수행합니다.나만의 오퍼레이터를 직접 구현하기 위해 프로그래밍 언어별 SDK들이 몇 개가 있습니다.Oper..
BackendDevOpsInfra
전체 읽기 →백엔드 개발자의 험난한 React 캘린더 컴포넌트 만들기 대작전 (feat. Props Drilling)
안녕하세요. Seller & SD Engineering 팀의 개발자 김민우입니다. 저는 주로 백엔드 개발을 담당하고 있지만, 최근에 프론트엔드 개발, 특히 React로 캘린더 컴포넌트 만들기에 도전했습니다. 이 글에서는 백엔드 개발자의 시각에서 본 프론트엔드 개발의 독특한 점들과 더불어 Props Drilling 문제를 해결한 경험을 공유하고자 합니다. 프론트엔드 개발에 대한 저의 경험은 전문적인 관점이 아닐 수 있지만, 이 분야에 대한 새로운 시각을 제공하려 합니다. 배경 : 저희 팀은 새로 오픈 할 ESM 개편안 중 '통계' 작업을 맡았습니다. 본래는 통계 페이지들의 특성상 상단에는 단순 조건 필터링, 하단에는 해당 조건에 따른 결과(그래프, 테이블 등)로 단순하게 구성하기 때문에 프론트에 대한 리..
BackendFrontendTools
전체 읽기 →IT에 대한 짧은 단상
IT라는 것은 우리가 속해서 항상 일을 하고 있는 영역이긴 하다. 하지만 삶도 비슷하지만 정신없이 살다 보면 현재 어디에 있는지 잊어버리기 쉽다. IT에 대해서 어떤 것이라는 의견을 내기는 너무 넓고 많은 전문가들이 있는 영역이라 조금 조심스럽긴 하지만 개인적인 경험을 기반으로 한번 이야기를 풀어보려 한다. 1.1 자동화의 추구 사람은 아마도 본능적이라고 생각될 만큼 효율적인 면을 추구하는 편인 것 같다. 본인이 직접 참여하지 않아도 축적된 지식적 패턴을 이용해 자동으로 돌아가는 기술적, 경제적인 무언가를 만드는 것을 계속적으로 추구해 왔다고 본다. 해당 부분이 초기에는 물리적인 요소와 대상을 기반으로 시도가 되었다고 보고, 현재는 사람의 행동과 정신적인 부분 양 쪽을 목표로 나아가고 있다고 본다..
AI/MLCareerCultureTools
전체 읽기 →