-
전시 딜 내재화 프로젝트 회고: MongoDB 기반 데이터 구축과 API 개선 과정
안녕하세요, 11번가 전시서비스개발팀의 서장원입니다. 전시 딜 내재화 업무를 맡아 진행했던 과정과 개선 작업이 갖는 의미에 대한 개인적인 회고를 공유해 보고자 합니다. 내용 이해를 돕기위해, 기초적인 질문을 던져봅니다. 출처: https://chimhaha.net/story/111311 ‘딜’ 그리고 ‘내재화’ 라는게 무슨 뜻인가요? 딜은 상품 판매를 위한 판촉행사라고 생각하면 쉽습니다. 예를 들어, 단 10일간! 사과 한 박스에 단돈 3만원! 내재화는 외부 기술/데이터를 가져와서 우리만의 특성에 맞게 조정하고 직접 관리한다는 뜻입니다. 즉, 상품의 판촉행사 정보를 보여주는 영역에 필요한 정보는 우리 전시서비스개발팀에서 직접 구축하고 입맛에...
-
Java CompletableFuture로 비동기 적용하기
안녕하세요. 11번가 클레임개발팀 박지훈입니다. 중앙 집중식 데이터베이스를 영역별로 분리하는 탈중앙화를 대비하여 분리 대상 테이블을 참조하고 있는 쿼리를 분리하고, 이관하는 작업을 진행하고 있습니다. 코드를 이관하는 과정에서 가장 중요한 부분은 as-is, to-be 결과를 비교하는 부분일 텐데요. 기존 결과 비교를 위해 이관 전/후 로직을 실행하는 부분이 순차적으로 실행되다 보니 전체적인 실행시간이 두 배로 증가하는 문제를 마주하였고, 1초 차이로 조회 결과가 달라지는 경우 이관 전 로직 실행이 완료된 이후 이관 후 로직이 실행되면서 정상 케이스임에도 결과 비교가 실패하는 문제를...
-
심볼릭 링크로 스프링 배치 무중단 배포하기
안녕하세요. 11번가 클레임개발팀 박지훈입니다. 11번가에서는 전사 배치 서버가 있고, 각 팀별로 팀 전용 배치 서버를 추가로 관리하기도 합니다. (최종 목표는 모든 팀이 함께 관리하는 레거시 배치를 각 팀 전용 배치로 이관하는 것입니다.) 클레임개발팀에서는 한 대의 서버로 운영되는 팀 배치 서버를 추가로 관리하고 있고, Spring Batch Job(이하 Job) 스케줄러는 Jenkins 툴을 사용하여 Job 들을 주기적으로 실행시켜 주고 있습니다. 평화롭던 어느 날..🌞 팀 배치 서버에서 한 가지 문제를 발견하게 되었습니다. Job 수행을 위해 jar 파일을 실행하는 도중...
-
Feature Flag - 안전하고 신뢰할 수 있는 배포로 나아가는 열쇠 🔑
안녕하세요. 11번가 Core플랫폼개발팀 전지원입니다. 저희 팀에서는 Spring Cloud 기반의 전사 MSA 플랫폼인 Vine의 공통 컴포넌트 개발과 운영을 담당하고 있습니다. 또한 각 소프트웨어 엔지니어링 조직이 Self-Service 기능을 사용할 수 있도록 툴체인과 워크플로우를 설계하고 있으며, 애플리케이션 전체 수명 주기에 필요한 운영 요구사항을 포괄하는 IDP (Internal Developer Platform)인 Wheelhouse를 개발하여 제공하고 있습니다. 이번 아티클에서는 Feature Flag 개념에 대해서 설명드리고, 기능을 Production 환경에서 안전하게 배포하고 실험하기 위해 Feature Flag를 도입한 사례를 소개해드리고자 합니다. Contents Contents 사례로 살펴보는 문제점 Feature...
-
11번가 인턴의 카탈로그 리뷰 API 개선기
안녕하세요. 11번가 PDP개발팀 신치용입니다. 작년 11월 중순부터 5주가량 진행된 인턴 기간동안 과제를 진행하면서 느낀 경험을 담은 글입니다. 많이 부족하지만 짧은 인턴 기간 동안 진행한 과제라는 점을 고려해주시면서 읽어주시면 감사하겠습니다! 😄 목차 인턴 과제 카탈로그 리뷰 API, 너 왜 문제 있어? 글로벌 캐시 도입 기존 구조 - Only 로컬 캐시 글로벌 캐시 로직 구현 글로벌 캐시를 추가한 후 흐름 캐시 자동 최신화 글로벌 캐시의 단점 동기 or 비동기 무엇이 더 좋을까? Test 1. 로컬 캐시에 데이터가...