devBlog
본문 바로가기
devBlog.kr
포스트주간 인기글최근 본 글즐겨찾기(로그인 필요)프로필(로그인 필요)새로운 소식요청하기
devBlog.kr
포스트주간 인기글최근 본 글즐겨찾기(로그인 필요)프로필(로그인 필요)새로운 소식요청하기
devBlog

푸터 메뉴

탐색
  • 포스트
  • 태그별 보기
  • 기업별 보기
  • 주간 인기글
정보
  • 이용약관
  • 개인정보 처리방침

© 2026 devBlog.kr. All rights reserved.

·

v3.0.1

기업/지마켓
지마켓 로고

지마켓 기술 블로그

총 104개 글 · 원본 블로그 방문 →

이커머스 지마켓의 개발 이야기와 기술 경험

지마켓 로고

지마켓

2023-06-14 · 약 3년 전

코루틴(Coroutine)에 대하여

안녕하세요. Checkout Engineering 팀 안세희입니다. 코루틴에 대해 많이 들어 봤지만 원론적인 의미에서 코루틴을 이해하기는 어렵다고 생각합니다. 언어 수준에서 다양한 라이브러리가 코루틴을 사용할 수 있게 제공하기에 항상 깊은 고려가 필요하진 않지만, 코루틴에 대한 개념을 정확히 알고 있어야 활용도 가능하기에 해당 주제로 글을 작성하고자 합니다. 코루틴(Coroutine) 이란? 코틀린을 통해 코루틴을 처음 접하시는 분들이 많기에 코루틴이 코틀린 언어에 종속적인 기술이라고 생각하는 분들이 많습니다. 그러나 코루틴은 1958년 코루틴 용어가 만들어지고 난 후 어셈블리 프로그램에서부터 적용되었던 개념입니다. C#, Javascript, Python, Go와 같은 고급 프로그래밍 언어에서도 지원하..

BackendMobileTools
지마켓 로고

지마켓

2023-06-07 · 약 3년 전

Apache Commons IO 취약점 파헤치기

안녕하세요! Platform Technology 팀 홍민지 입니다. 이번 포스팅에서는 현재 진행하고 있는 스프링부트 프로젝트에 적용되어 있던 라이브러리 'Apache Commons IO'에서 발견된 보안 취약점에 대한 이야기를 해보려고 합니다. 1. Open source 와 CVE 다수의 프로그램이 모여있는 Open source, Open source 에서 많이 발견되는 CVE Open source 는 현대 소프트웨어 개발의 핵심 구성 요소로 자리 잡았다고 볼 수 있습니다. 그러나 소스코드가 공개되어 있는 만큼 취약점이 많이 발견되기도 합니다. 2022 OSSRA 보고서에 따르면, 오픈소스는 전 세계적 산업 분야의 프로젝트 97%에 사용되고 있으며, 이 중 81%는 알려진 오픈소스 취약점을 하나 이상 가..

BackendSecurityTools
지마켓 로고

지마켓

2023-05-23 · 약 3년 전

docker-compose를 이용하여 다수의 spring boot 프로젝트 연결하기 (Part 2)

docker-compose를 이용하여 다수의 spring boot 프로젝트 연결하기 Part 1 : docker-compose를 이용하여 로컬 개발환경 구성하기 Part 2 : docker-compose를 이용하여 다수의 spring boot 프로젝트 연결하기 개요 Part1에서 소개한 예제에서는 하나의 git repo로 구성된 java 멀티 프로젝트를 docker-compose를 이용하여 구성했습니다. 이번 Part2에서는 다른 git repo의 어플리케이션을 이용하여 Part1에서 생성했던 backend 서버 어플리케이션과 함께 동작하도록 구성해보겠습니다. 편의상 Part 2의 프로젝트는 frontend로 예제를 작성하였습니다. 개발 블로그에서 소개하는 코드들은 gmarket-techblog-fron..

BackendDevOpsFrontendTools
지마켓 로고

지마켓

2023-05-17 · 약 3년 전

DiffUtil 이해하기

Android DiffUtil 이해하기안녕하세요 Mobile Application 팀 전계원입니다.DiffUtil 은 androidx 패키지에 포함되어 두 리스트 간의 차이를 계산하고, 새로운 리스트로 변경하기 위한 작업목록을 반영하는 것에 도움을 주는 유틸리티 클래스입니다. 현재 G마켓에는 상당히 많은 영역에서 리스트를 업데이트하기 위해 DiffUtil 을 사용하고 있습니다.G마켓에 입사하기 전에는 DiffUtil 에 대해 들어보기만 했지만, 입사 후 G마켓에 적용된 코드를 이해하기 위해 개인적으로 공부를 했었습니다. 이번 글을 통해서 DiffUtil 에 대해 공부한 내용을 공유드리고자 합니다.1. Before DiffUtil - notify 패밀리샘플 코드와 함께 RecyclerView.Adapter..

MobileTools
지마켓 로고

지마켓

2023-05-10 · 3년 이상 전

달리는 인증 서비스의 NoSQL을 바꾸자. - 실전편

안녕하세요. Seller & SD Engineering 팀 박명훈입니다. 지난번의 전략편에 이어 이번에는 실제 서비스 전략에 대해서 이야기하려고 합니다. 실제 서비스를 배포하며 사용했던 전략, 그리고 그 과정에 대해서 이번 글에 서술합니다. 달리는 인증 서비스의 NoSQL을 바꾸자. - 전략편 달리는 인증 서비스의 NoSQL을 바꾸자. - 실전편 배포 전략과 설계 지난 전략편에서 이야기했듯이 서비스에 이슈가 없이 배포하기 위해서 여러 스텝으로 작업을 분리했습니다. 이를 도식화시키면 다음과 같습니다. 1차 배포 1차적으로는 도식에서의 1 ~ 3번까지의 작업입니다. 배포 서버 판매자 페이지 관리자 페이지 배포 사항 Couchbase의 데이터를 MongoDB, MSSQL로 마이그레이션 합니다. 기존에 Couc..

BackendDatabaseDevOps
지마켓 로고

지마켓

2023-05-02 · 3년 이상 전

달리는 인증 서비스의 NoSQL을 바꾸자. - 전략편

안녕하세요. Seller & SD Engineering 팀 박명훈입니다. 최근 개발자로서 직접 기안한 프로젝트를 완료했습니다. 팀에서는 Couchbase를 통해 인증 서비스의 데이터를 제공하고 있었는데, 낮은 사용성 이슈와 비즈니스 정책, 서비스 관리의 여러 이유로 인해 불편함이 많았고, 이로 인해 기획자들이 업무를 진행할 때 성능 이슈로 인해 거의 사용이 불가능할 정도로 문제가 많았습니다. 대표적인 예시로 검색을 하면 5분씩 걸렸습니다. Couchbase는 MongoDB와 같이 Key-Document 구조를 가진 NoSQL 입니다. 이번 기회에 개선을 진행하며 기존의 문제를 해결하고, 성능적으로나 서비스적으로 아쉬웠던 부분을 개선했습니다. 그 과정과 결과에 대해서는 내용이 많아 크게 전략편과 실전 편으..

BackendDatabaseDevOps
지마켓 로고

지마켓

2023-04-26 · 3년 이상 전

Testcontainers로 통합테스트 만들기

안녕하세요. Shopping Service Backend팀 안재열입니다.저희 팀에서는 여러 팀에서 세심하게 생성하고 관리한 상품과 관련된 데이터를 고객에게 적절하게 가공하여 상품 목록 정보를 제공하는 API를 개발하는 업무를 담당하고 있습니다. 이 과정에서 다양한 모듈을 결합하여 데이터를 가공하는 작업들을 수행하게 됩니다. 그러한 작업 중 통합 테스트를 진행하게 되는데요, 이번 글에서는 TestContainers를 활용한 통합 테스트 작성 방법에 대해 알아보겠습니다.통합테스트는 무엇인가요?통합 테스트(Integration Test)란, 서로 다른 부분들이 원활하게 작동하는지 확인하기 위해 여러 모듈을 같이 테스트하는 과정입니다. 여기서 모듈은 웹서버, WAS, DBMS, 메시지 브로커, 파일서버 등이 포..

BackendDatabaseTesting
지마켓 로고

지마켓

2023-04-19 · 3년 이상 전

BigDecimal A to Z: 정확한 계산을 위한 숫자 처리 클래스

안녕하세요. Club & Discount Engineering 팀에서 지마켓 할인/쿠폰 개발 업무를 맡고 있는 윤영택입니다. 저희 팀은 할인/쿠폰/수수료 등 돈과 관련된 도메인을 다루다 보니 코드를 작성할 때 BigDecimal 타입을 굉장히 많이 쓰고 있습니다. 본 포스팅을 통해 BigDecimal을 사용해야 하는 이유와 개념, 그리고 사용법을 간단하게 소개해보고자 합니다. 1. 서론 float와 double의 문제점 여러분은 혹시 소수(decimal)를 다룰 때 다음과 같은 경험이 있으신가요? 아래 코드를 보면 특정 조건에 맞춰 함수가 실행되는 것을 기대했는데, 실제론 실행되지 않습니다. 결괏값을 출력해보면 기대와 다른 값이 나오는 것을 확인할 수 있습니다. double a = 0.1; double ..

BackendTestingTools
지마켓 로고

지마켓

2023-04-12 · 3년 이상 전

docker-compose를 이용하여 로컬 개발환경 구성하기(Part1)

docker-compose를 이용하여 로컬 개발환경 구성하기 Part 1 : docker-compose를 이용하여 로컬 개발환경 구성하기 Part 2 : docker-compose를 이용하여 spring boot 프로젝트 연결하기(예정) 배경 최근 Gmarket Member Engineering 팀에서 Quilt - 로그인 개선 프로젝트를 진행하였습니다. 기존 닷넷 기반의 레거시 어플리케이션을 Java + Container 기반으로 전환하는 것을 시작으로, 수년간 쌓여온 기술 부채를 해결하고 보다 나은 회원 인증 체계를 개발하기 위한 첫 발을 내디뎠습니다. 이를 위하여 저희 팀에서는 지속 가능 하고 확장 가능한 개발환경 구성을 고민하였고, docker를 로컬 개발환경 구성에 이용했습니다. 그동안 Java..

BackendDevOpsInfra
지마켓 로고

지마켓

2023-04-05 · 3년 이상 전

버그와 함께 알아보는 RecyclerView 에서 wrap_content 사용을 조심해야 하는 이유

안녕하세요. G마켓에서의 첫 돌이 지난 Mobile Application 팀 전계원입니다.작년 여름, 지마켓 내부코드 리팩토링 과정에서 버그를 만났었습니다.버그의 원인을 이해하기 위해 분석하고 공부했던 내용들을 이번 글을 통해 공유해보고자 합니다.0. 프롤로그 - 버그 발견G마켓 Mobile Application 팀에서는 원활한 유지보수와 Android 시장의 개발 트렌드를 따라가기 위해 리팩토링 작업을 매우 권장하고 있습니다.당시 신규 입사자였던 저도 G마켓의 코드에 빠르게 적용하기 위해 코드를 분석하며 간단한 화면 리팩토링 프로젝트를 진행했었습니다.그리고 개발한 내용을 홀로 테스트하던 중 이상한 경험을 마주하게 됩니다. 위 화면에서 이상한 점을 느끼셨나요?123현재 검색어 리스트가 나열되어 있는 상태..

MobileTestingTools
지마켓 로고

지마켓

2023-03-28 · 3년 이상 전

초보 개발자를 위한 Redis Cluster Migration 가이드라인

들어가기 전에안녕하세요, Shopping Service API팀 강희정입니다.작년 여름쯤 입사하여 낯선 환경과 도메인에 적응하고, 새롭게 접한 기술들을 익혀 가느라 정신없는 나날을 보냈습니다. 업무가 어느 정도 적응되었나 싶을 겨울쯤, 저에게 굉장히 낯선 업무가 주어졌습니다.Master/Slave 구조의 Redis에서 Cluster 구조의 Redis로 migration 되니, 관련 코드 작업을 진행해 주세요.업무를 받자마자 저는, 이런 생각을 했던 것 같습니다.큰일 났다. 하나도 모르겠는데 어떡하지?전통적인 SQL 방식의 RDBMS만 사용해 본 제게 Redis는 굉장히 낯선 존재였습니다. Redis도 모르겠는데 Cluster 구조로 migration하라는 코드를 작성하라니, 어디서부터 어떻게 시작해야 할..

BackendDatabaseTools
지마켓 로고

지마켓

2023-03-16 · 3년 이상 전

Redis Lua Script를 이용해서 API Rate Limiter개발

안녕하세요. Item Engineering 팀 박상윤입니다. 이번 글에서는 상품 엑셀 등록 서비스 개발하고 컨슈머에서 사용할 API Rate Limiter 개발하면서 발생한 이슈를 정리한 글입니다. 이 글은 아래와 같이 구성되어 있습니다. API Rate Limiter 도입 필요성 API Rate Limiter 적용 API Rate Limiter 동시성 문제 Lua script 실행시켜서 atomic 연산을 보장하도록 개선 정리 1. API Rate Limiter 도입 필요성 상품 엑셀 등록 서비스는 상품 정보를 엑셀에 입력하여 최대 500개의 상품을 동시에 등록할 수 있는 서비스입니다. 상품 엑셀 등록 서비스는 엑셀을 파싱 해서 상품등록 모델로 생성시켜 주는 프로듀서와 등록 모델을 수신해서 상품 등록 ..

BackendDatabaseDevOps
지마켓 로고

지마켓

2023-03-08 · 3년 이상 전

자바스크립트 Map 자료구조 적극 이용하기

서론자바스크립트로 프론트엔드 웹 코딩을 하면서 Key - Value 쌍의 데이터를 저장하고 조회할 때 어떤 자료구조를 이용하시나요? 열이면 여덟 아홉 객체(Object)를 이용하는 듯합니다.interface Kimchi { name: string; alias: string; score: number; ingredients: string[];}const kimchis: Record = { 1: [ { name: "백김치", alias: "맵린이", score: 1, ingredients: ["소금", "무", "양파", "배", "배추", "설탕"] }, { name: "나박김치", alias: "깍두기먹을바엔나박김치", ..

FrontendTools
지마켓 로고

지마켓

2023-03-02 · 3년 이상 전

Java Logger의 또다른 식구, tinylog

안녕하세요. Advanced Technology 팀 박규민입니다. 오늘은 Java, Kotlin, Scala와 같은 JVM 언어에서 사용할 수 있는 오픈소스 경량 로깅 프레임워크를 소개드리려고 합니다. Log4j, Logback에 비해 상대적으로 빠른 로깅 속도와 간단한 구성, 다양한 출력 옵션 등의 메리트가 있는 tinylog에 대해 알아보겠습니다. What is tinylog? tinylog는 Java 플랫폼에서 동작하는 로깅 프레임워크입니다. JVM, GraalVM(Oracle에서 만든 OpenJDK 기반 JVM), Android에서 동작이 가능합니다. 보통은 Slf4j라는 Logging API와 바인딩하여 Log4j, Logback과 같은 로깅 프레임워크를 많이 쓰는데요. tinylog도 Slf4..

BackendTools
지마켓 로고

지마켓

2023-02-22 · 3년 이상 전

쿠버네티스 오퍼레이터 적용하기

서론안녕하세요. 지마켓의 원활한 서비스 운영을 위해 쿠버네티스 인프라를 운영 업무를 하고 있는 Platform Technology 팀 김지형입니다.Red Hat Openshift 기반의 쿠버네티스 클러스터를 운영하게 되면서 자연스럽게 적용하게 된 쿠버네티스 오퍼레이터에 대한 사례와 경험을 기술하고자 합니다. 오퍼레이터에 대한 간단한 설명과 쿠버네티스 오퍼레이터에 대해서 설명하고, 현재의 오퍼레이터 패턴이 가져다주는 이점과 한계에 대한 내용을 포함합니다. 오퍼레이터 디자인 패턴오퍼레이터(Operator)는 2016년 CoreOS 블로그 포스트에서 공개된 디자인 패턴으로, 단어 그대로 운영자의 역할을 소프트웨어에 새긴 개념이라고 할 수 있습니다. SRE 엔지니어는 소프트웨어를 개발해 애플리케이션을 운영하는 ..

DevOpsInfraKubernetesMSA
지마켓 로고

지마켓

2023-02-15 · 3년 이상 전

Handling-request-binding-exception in webflux

이번 글에서는 Spring Webflux + Kotlin 기술 스택에서 Request Binding Exeption에 대한 처리를 예제코드를 통해서 구현해 보도록 하겠습니다.Controller 처리Controller에서는 @Valid annotation을 사용해서 request Object 대한 validation을 체크합니다. @ApiOperation("xxx") @GetMapping("/main") suspend fun getMainDeals( @Valid retrieveMainDealRequest: RetrieveMainDealRequest ) = superDealGoodsService.readSuperDealMain(retrieveMainDealReq..

BackendTestingTools
지마켓 로고

지마켓

2023-02-08 · 3년 이상 전

API Management PaaS에서 Multi-tenancy 구현하기

개요 안녕하세요. 지마켓에서 개발자분 업무의 편의를 도모하기 위한 클라우드 플랫폼 업무를 담당하고 있는 김지형입니다. 이번 글에서는 API 관리형 서비스인 Red Hat 3Scale 제품을 이용해 개발 팀 간 멀티테넌시 구축을 위해 고려한 부분과, 실 적용 과정에 대해 글을 쓰고자 합니다. 멀티테넌시 (Multi-tenancy) 멀티테넌시 (Multi-tenancy)는 하나의 소프트웨어 어플리케이션을 여러 고객에게 일관된 경험으로 서비스할 수 있게 하는 아키텍처를 말합니다. 클라우드 컴퓨팅이 발전하면서 가상화 및 컨테이너화를 통해 각각의 고객이 분리된 각각의 데이터를 이용할 수 있게 되었고 동일한 호스트 노드 내 단일 인스턴스지만 각각 별도의 앱을 이용하는 것처럼 구현할 수 있게 되었습니다. 인프라 멀티..

ArchitectureBackendDevOpsInfra
지마켓 로고

지마켓

2023-02-01 · 3년 이상 전

Thread의 개인 수납장 ThreadLocal

안녕하세요. Fulfillment Engineering 팀의 백정현입니다.Thread에 개인 수납장이 있다는데 들어보셨나요?이번 포스팅에서는 ThreadLocal에 대해서 가볍게 살펴보러 들어가 보겠습니다.ThreadLocal은 무엇인가요?이름을 살펴보면 “Thread가 로컬 환경에서의 어떤 것과 연관이 있다.”라는 것을 가늠할 수 있습니다.공식 문서에서는 java.lang 패키지에 있는 ThreadLocal 클래스를 다음과 같이 요약해서 설명할 수 있습니다.Thread에 대한 로컬 변수를 제공한다.각각의 Thread가 변수에 대해서 독립적으로 접근할 수 있다.그렇다면 우리는 ‘각자가 독립적으로 사용할 수 있는.. 로컬 변수(물품)’라고 생각하면,이것에서 수납장을 연상할 수 있습니다.ThreadLocal..

BackendTools
12345

페이지 3 / 6 (총 104개)