본문 바로가기 메뉴 바로가기

지마켓 기술블로그

프로필사진
  • 태그

기술블로그

검색하기 폼
  • 분류 전체보기 (61) N
    • News (3)
    • Culture (3)
    • Mobile (0)
    • Frontend (5)
    • Backend (33) N
    • Infra (15)
    • AI (2)
  • 방명록

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

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

Backend 지마켓 강희정   
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개의 상품을 동시에 등록할 수 있는 서비스입니다. 상품 엑셀 등록 서비스는 엑셀을 파싱 해서 상품등록 모델로 생성시켜 주는 프로듀서와 등록 모델을 수신해서 상품 등록 ..

Backend 지마켓 박상윤   
자바스크립트 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: "깍두기먹을바엔나박김치", score: 1, ingredients: ["소금", "무", "배추", "미..

Frontend 지마켓 김지형   
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..

Backend 지마켓 박규민   
쿠버네티스 오퍼레이터 적용하기

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

Infra 지마켓 김지형   
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(retrieveMainDealRequest) validation 조건 vali..

Backend 지마켓 양승권   
API Management PaaS에서 Multi-tenancy 구현하기

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

Infra 지마켓 김지형   
Thread의 개인 수납장 ThreadLocal

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

Backend 지마켓 백정현   
이전 1 2 3 4 ··· 8 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바