
안녕하세요 Data Platform Engineer 조광진입니다.저희 Platform Technology 팀은 지난 수년간 On-premise Hadoop 기반의 빅데이터 플랫폼인 'Baikal' 이란 서비스를 사내에 제공하여 전사에서 활용되는 데이터의 수집, 적재, 분석에 대해 편의성을 제공하고 있습니다.빅데이터 플랫폼 Baikal은 On-premise 에서 Cloud Lakehouse Platform으로 전환을 앞두고 있습니다.Cloud Lakehouse Platform으로 전환하기 앞서 On-premise Hadoop 기반인 Baikal에 대해 소개하고자 합니다.Gmarket BaikalBaikal 이란 이름은 잘 아시다시피 러시아 시베리아 남쪽의 있는 세계에서 가장 오래되고 깊은 담수호 이름입니다..

시뮬레이션이전 글을 통해 테스트에 사용할 기록들을 캡처하여 확보했습니다. 이렇게 캡처한 내용을 바탕으로 mock service 를 띄워 이제는 시뮬레이션할 수 있습니다. 이제 테스트를 수행해 봅시다. hoverfly dashboard 에서 simulate 모드로 변경하거나 기록한 파일을 import 하여 hoverfly 를 재기동하면 테스트 환경으로 활용할 수 있습니다. 하지만 몇 가지 좀 더 수월한 테스트 조력을 원하였습니다. hoverfly 는 매우 디테일하게 기록하지만 실제 테스트에 적합한 동작은 덜 디테일하거나 추가적인 디테일이 필요할 수 있다.mocking 하는 서비스의 특징을 흉내 낼 때, 각 config 가 서비스 단위로 관리할 수 있는 게 편했다.hoverfly 는 가볍고 빠르다고 하지만 ..

OCR : Optical Character RecognitionOCR은 손글씨로 작성되거나 인쇄된 종이 문서를 스캐너와 같은 디지털 영상 획득 장치로 이미지화한 것들로부터 문자(열)를 인식/추출 하는 이미지 분석 기술로부터 시작되었습니다.최근에는 일상 생활에 스마트 폰이나 태블릿 같은 디지털 기기를 활용하는 문화가 대중화 되면서 이미지 편집 도구로 생성된 디지털 이미지나 디지털 카메라로 찍은 다양한 이미지에 포함된 문자(열)을 인식하는 기술로 발전하고 있습니다. OCR의 간략한 역사컴퓨터가 개발되기 이전부터 이미 시각 기호를 문자에 대응시키려는 개념이 있었으며, 컴퓨터가 발명된 이후 다양한 활용 방법을 모색하기 시작하였고, 일반 사진을 컴퓨터에서 이용할 수 있도록 하는 디지털 이미지 표현/변환 기술을 연..

안녕하세요. SmilePay Engineering 팀 문한국입니다. 이번 포스팅에서는 Spring의 주요 특징 중 하나인 AOP를 이용하여 인증 로직을 구현한 예시와 Swagger를 활용하여 header를 자동으로 연동한 내용을 공유하려고 합니다. AOP 활용 하기 AOP는 기술 면접에서 Spring에 관한 부분에서 단골질문으로 나올 만큼 Spring에서는 중요한 개념이라고 생각합니다. 관점 지향 프로그래밍인 AOP(Aspect Oriented Programming)는 proxy 패턴을 활용한 기술로 공통된 기능을 구현하여, 필요한 상황에 사용할 수 있도록 하는 개념으로 코드의 중복을 피하고 기능을 모듈 형태로 사용할 수 있는 좋은 기능이라고 생각합니다. 아래 이미지는 AOP를 설명하기 위하여 많이 활용..

Gmarket의 유사이미지 추천 기능 파헤치기 안녕하세요 VIP & Vertical 팀 김윤제입니다. VIP 파트에서 상품 상세 페이지 및 리뷰 업무를 맡고 있습니다. 이번 블로깅에서는 Gmarket에서 사용하고 있는 유사이미지 추천 기능에 대해 소개하려 합니다. 유사이미지 추천 기능이란? Gmaket App에는 2022년 5월 유사이미지 추천 기능이 추가되었습니다. 유사이미지 추천 기능이란 방금 본 상품과 같은 상품 이미지가 아닌 '시각적으로 유사한' 이미지의 상품을 보여주는 것입니다. 이 기능이 생기면서 사용자는 유사한 상품을 보다 쉽게 찾을 수 있게 되었습니다. 유사이미지 추천 기능의 개발이 완료되기까지는 수많은 시간과 노력, 인내가 필요했다고 합니다. 아래에서 자세히 살펴보도록 하겠습니다. 유사이..

성능 테스트와 반복 성능 테스트는 실제 부하를 받는 환경과 동일한 환경에서 이뤄질수록 의미가 높습니다. 하지만 정말 운영환경과 동일한 환경을 여러 목적을 위해 유지하는 것은 팀이나 기업의 사정에 따라 쉬운 일은 아닙니다. 그렇다고 운영 중인 시스템에 영향을 미칠 수 있는 환경에서 성능을 테스트해 보는 것은 아주 위험천만한 일입니다. 만약, 성능을 확인하기 위해 운영환경과 아주 동일한 환경을 마련하기가 어렵다면 우리는 어떤 방법을 쓸 수 있을까요? 관련 글 성능 테스트를 위한 격리 - 단순한 모델 성능 테스트를 위한 격리 - hoverfly 성능 테스트를 위한 격리 - 시뮬레이션 미니어처 성능 테스트는 반복 수행해보기에는 부담스럽기는 합니다. 하지만 성능 테스트를 자주 수행할 수 있고 그 부담을 줄일 수 ..

격리 성능 테스트의 한 가지 곤란한 점은 그 영향력입니다. 다른 서비스나 테스트에 영향을 줄만한 부하는 모두를 곤란하게 합니다. 따라서, 가능하다면 테스트 영역을 격리하는 것이 좋습니다. 가장 좋은 격리는 전체 시스템을 테스트를 위해 한 벌 준비하는 것이지만 시스템이 커질수록 이는 부담입니다. 약간 현실적인 얘기를 하자면, 현실에서는 모든 팀이 테스트 용이한 배포본을 유지하지 않을 수도 있습니다. 이런 경우에도 격리가 가능할까요? 차선으로 선택할 수 있는 방식은 mock service 를 활용하는 것입니다. mock service 는 기능에 따라 해당 서비스의 latency 도 모사할 수 있습니다. 이러한 mock service 를 만드는 과정에 필요한 것은 흉내 낼 api 호출들을 마련하는 것입니다. ..

약간 특이한 자판기가 있습니다. Nickel(5¢, 센트), Dime(10¢), Quarter(25¢) 세 종류의 동전만 넣을 수 있고, 상품은 사과 주스와 오렌지 주스뿐이며 가격은 각각 30센트입니다. 그리고, 거스름 돈 기능이 없어서 30¢까지만 동전 투입이 가능합니다. 예를 들어, 25¢가 이미 들어있는 상태에서는 Nickel(5¢) 동전만 투입할 수 있습니다. Dime이나 Quarter 동전을 넣는다면 그대로 뱉어냅니다. 이런 자판기를 코드로 어떻게 구현해야 할까요? 객체지향에 익숙한 개발자라면 아래와 비슷한 방식으로 구현할지도 모릅니다. class VendingMachine { int numNickels; int numDimes; int numQuarters; OrangeJuice orangeJ..