안녕하세요, 저는 Dev Platform 팀에서 사내 배포 시스템을 담당하고 있는 강대현입니다. 이번 포스팅에서는 Jenkins를 이용하고 있는 배포 시스템 개선 경험을 공유하려고 합니다. Jenkins는 Java 기반의 오픈 소스 도구로, 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Delivery, CD) 구축에 사용됩니다. 배경 이번 주제는 Continuous Delivery(이하 CD) 과정에 초점을 둔 배포 시스템의 이야기입니다. 사용 중인 사내 배포 시스템(이하 배포툴)은 직접 개발한 서비스와 오픈 소스 도구인 Jenkins를 이용하여 CD 파이프라인을 구성하고 있습니다. 배포툴은 웹 UI를 통해 배포 생성 및 승인과 같은 사용자 입력을 처리..
안녕하세요. Shopping Service Backend팀 안재열입니다. 저희 팀에서는 여러 팀에서 생성하고 관리한 상품과 관련된 데이터를 적절하게 가공하여 상품 목록 정보를 제공하는 API를 개발하는 업무를 담당하고 있습니다. 이 과정에서 다양한 팀에서 제공하는 다수의 API를 사용하여 한데 묶어주는 메시업(Mashup) 작업활동을 수행하게 됩니다. 그런데 다양한 곳의 API를 엮다보면 예기치 못한 문제가 발생하기도 합니다. 이번 글에서는 API 메시업 활동 중에 만나게 되는 문제점과 해결 방안에 관해서 살펴보겠습니다. API 메시업(API Mashup) API는 "Application Programming Interface"의 약자로, 다양한 소프트웨어나 애플리케이션들이 서로 상호작용하게 해주는 도구..
안녕하세요! Seller & SD Engineering 팀의 Seller 도메인에서 판매자 회원의 가입, 계정 관리 업무를 맡고 있는 3년 차 막내 개발자! 김현진이라고 합니다. 이 글은 같은 팀에 계신 박명훈 님의 '막내 개발자의 Sell POD PD 생활'을 오마주한 글입니다. 막내 개발자의 Sell POD PD 생활 보러가기 저 글이 인상 깊게 남아 지마켓에 입사하게 된 것이 엊그제 같은데 팀원 분들과 함께한 지 벌써 1년이 다 되어가고 있습니다. 제가 명훈님의 글을 읽고 지마켓에 입사하고 싶다는 마음을 갖게 되었듯이 제 글을 읽고 누군가 "현진님 글이 감명 깊어 입사했습니다. 이렇게 뵙게 되네요!" 하는 말씀을 해주셨으면 좋겠다는 개인적인 바람을 담아 글을 적어 내려가 봅니다. 팀 소개. Sell..
안녕하세요. Mobile Application 팀 전계원입니다. QA 과정에서 발견된 이슈를 분석하던 중 원인이 OS 에 있어서 발생한 이슈였던 경험이 있었습니다. 원인이 OS 자체에 있다는 점이 신기했던 면도 있었지만, 해당 버그가 OS 10 이하를 지원하는 앱이라면 누구나 겪을 수도 있다는 사실이 인상 깊었습니다. 그래서 많은 분들께 공유드리고자 버그의 원인을 분석하고 해결방안을 찾아갔던 그 당시의 이야기를 작성하였습니다. 0. 프롤로그 - 버그 발견 G마켓에는 QA 부서가 별도로 존재합니다. 그리고 어느 날 QA 담당자분을 통해 재연영상과 함께 이슈를 할당받았습니다. 무엇이 문제인지 알 것 같나요?? 천천히 영상의 상황을 살펴보겠습니다. 옥션에서 새로운 페이지로 이동하였습니다. 그리고 정상적인 상황..
들어가기 전에 안녕하세요, Shopping Service API팀 강희정입니다. 제목에서부터 유추 가능하듯이, 이번 글에서는 제가 속해 있는 Shopping Service API팀에 대해 이야기해 보고자 합니다. 약 1년 전에 지마켓에 입사한 이후로, 종종 전 직장 동료들을 만나거나 유사한 업계에 종사하는 다른 친구들을 만날 때 항상 듣던 말이 있었습니다. 물론 지금도 간간히 듣는 말이기도 합니다. Shopping Service API팀? 뭐 하는 팀이야? (과장 없이, 여태까지 만난 사람들 중 무슨 일을 하는 팀인지 맞춘 사람은 단 한 명뿐이었습니다. 여러분들도 어떤 일을 하는 팀인지 맞춰 보세요!) API는 API고 Shopping Service API는 말 그대로 쇼핑과 관련된 정보를 제공해 주는 ..
안녕하세요. Seller & SD Engineering 팀에서 판매자 가입, 계정 관리 업무를 맡고 있는 주니어 개발자 김현진입니다. 개발을 빠르게 빠르게 진행하다 보면 놓치게 되는 디테일, 에러 응답 처리 방법에 대한 주제로 글을 써보려 합니다. 에러 응답을 처리하는 방법 Java에서 에러를 처리하는 코드의 기본 구조는 아래와 같습니다. try { ... } catch(예외1) { ... } catch(예외2) { ... } 예외가 발생할 가능성이 있는 코드를 try로 감싸고, 잡아내고 싶은 예외를 catch에 명시해 주는 방식입니다. try로 감싼 코드에서 예외가 발생하지 않았다면 catch 부분의 코드는 그대로 통과됩니다. 하지만 예외가 발생했다면 발생한 예외가 속한 catch 문을 찾아 해당 코드..
안녕하세요. Checkout Engineering 팀 안세희입니다. 코루틴에 대해 많이 들어 봤지만 원론적인 의미에서 코루틴을 이해하기는 어렵다고 생각합니다. 언어 수준에서 다양한 라이브러리가 코루틴을 사용할 수 있게 제공하기에 항상 깊은 고려가 필요하진 않지만, 코루틴에 대한 개념을 정확히 알고 있어야 활용도 가능하기에 해당 주제로 글을 작성하고자 합니다. 코루틴(Coroutine) 이란? 코틀린을 통해 코루틴을 처음 접하시는 분들이 많기에 코루틴이 코틀린 언어에 종속적인 기술이라고 생각하는 분들이 많습니다. 그러나 코루틴은 1958년 코루틴 용어가 만들어지고 난 후 어셈블리 프로그램에서부터 적용되었던 개념입니다. C#, Javascript, Python, Go와 같은 고급 프로그래밍 언어에서도 지원하..
안녕하세요! Platform Technology 팀 홍민지 입니다. 이번 포스팅에서는 현재 진행하고 있는 스프링부트 프로젝트에 적용되어 있던 라이브러리 'Apache Commons IO'에서 발견된 보안 취약점에 대한 이야기를 해보려고 합니다. 1. Open source 와 CVE 다수의 프로그램이 모여있는 Open source, Open source 에서 많이 발견되는 CVE Open source 는 현대 소프트웨어 개발의 핵심 구성 요소로 자리 잡았다고 볼 수 있습니다. 그러나 소스코드가 공개되어 있는 만큼 취약점이 많이 발견되기도 합니다. 2022 OSSRA 보고서에 따르면, 오픈소스는 전 세계적 산업 분야의 프로젝트 97%에 사용되고 있으며, 이 중 81%는 알려진 오픈소스 취약점을 하나 이상 가..