뒤로가기

Beyond Price Comparison
너와 나와, 다나와에서 함께 개발해요 개발자 지원하기

검색파트의 반복 작업 자동화 과정

주기적으로 들어오는 반복적인 작업을 자동화한 사례를 소개합니다.

곽명환 2024.03.08.

다나와 Kotlin을 만나다!

다나와에서 Kotlin을 사용하기 시작한 이야기를 소개합니다.

장민규, 윤성현, 이주영 2024.02.13.

다나와 웹 트래픽 로그 데이터 분석 시스템 도입기

다나와에서 사용되는 웹 트래픽 로그 데이터 분석 시스템 도입기

선지호, 이현우 2023.12.13.

다나와의 상품 색인 파이프라인

다나와에서 사용하는 상품 색인 파이프라인을 개선해봅니다.

곽명환 2023.11.10.

다나와의 상품 데이터 여정

다나와에서 상품 데이터를 수집하고 분류하는 여정을 소개합니다.

장민규 2023.08.30.

Elasticsearch 3TB의 인덱스를 reindex 하는 방법

대용량, 대규모의 인덱스를 재색인하는 방법을 알아봅니다

반윤성 2023.05.16.

IntelliJ chatGPT Plugin Setting

IntelliJ에서 chatGPT를 연동해서 사용하는 방법을 알아봅니다

반윤성 2023.03.16.

Elasticsearch Search After 성능 체크

Elasticsearch Paginate Search 성능을 비교해봅니다.

임광민 2023.02.13.

Mecab과 Nori, Fastcat 플러그인 색인 성능 비교

다양한 ES 플러그인의 성능을 비교해보면서 성능이 우수한 플러그인을 찾아봅니다

반윤성 2023.01.05.

!프론트엔드 개발자의 next.js 개발기

!프론트엔드 개발자의 next.js 개발기 입니다.

장민규, 이현우 2022.12.29.

is-deploy 트러블 슈팅 및 회고

is-deploy를 개발하고 테스트하면서 겪었던 이슈 및 트러블슈팅 회고록입니다

장민규 2022.12.22.

아파치 톰캣 로드밸런싱 상태에서 WAS 무중단 자동 배포하기

L4로 묶인 아파치 톰캣 로드밸런싱 환경 WAS 무중단 자동 배포하는 방법을 알아보겠습니다

장민규 2022.12.21.

IntelliJ와 WSL2로 Mecab-ko 개발환경 셋팅하기

Windows 개발 환경에서 신규 형태소 분석기 개발하기

반윤성 2022.12.19.

DACON을 통한 코드 실습 - FIFA 선수 이적료 예측

DACON의 FIFA 선수 이적료 예측 문제를 통해 실제 머신러닝 모델링을 진행해 보겠습니다.

이현우 2022.12.05.

머신 러닝 로지스틱 회귀

머신 러닝의 로지스틱 회귀의 개념에 대해서 설명하고 간단한 코드를 통해 실습을 진행합니다.

이현우 2022.12.01.

Gitlab 마이그레이션 후 업그레이드 (with. Gitlab-Runner)

선지호 2022.11.28.

1G 메모리를 사용하여 1초만에 2TB 텍스트 파일을 검색하기

디스크 기반 정렬을 통해 대용량 텍스트 파일의 내용을 검색하여 API로 제공하는 방법

반윤성 2022.11.10.

iOS/Android 프로젝트에 Flutter Module 적용하는 방법

iOS/Android 프로젝트에 Flutter Module을 적용하고 Method Channel을 통해 argument를 전달하는 방법을 알아보겠습니다.

선요한 2022.10.24.

Spring for GraphQL Custom Exception

Spring for GraphQL에서 Exception 다루는 법을 알아보겠습니다.

장민규 2022.09.25.

머신 러닝 선형 회귀

머신 러닝의 선형 회귀의 개념에 대해서 설명하고 간단한 코드를 통해 실습을 진행합니다.

이현우 2022.09.13.

Github Actions에 Self-hosted Runner 등록하기

Github Actions에 Self-hosted Runner를 등록하는 방법에 대해 알아보겠습니다

선요한 2022.08.24.

Fastlane을 이용한 앱 자동 배포

Fastlane을 이용한 앱 자동 배포에 대해 알아보겠습니다.

선요한 2022.08.23.

Flutter에서 GraphQL 사용하기

Flutter에서 GraphQL 사용하는 방법에 대해 알아보겠습니다.

선요한 2022.08.22.

Elasticsearch Reject Exception 모니터링

다나와의 ES Reject Exception 모니터링 방법을 소개합니다.

김윤기 2022.08.19.

Spring for GraphQL에서 Interceptor와 Map

Spring for GraphQL에서 Interceptor 설정 방법이랑 Map을 반환하는 방법을 알아보도록 하겠습니다.

장민규 2022.08.11.

JPA로 RDB에 JSON 타입 다루기

JPA를 통해 RDB JSON 타입을 핸들링하는 방법을 알아보겠습니다 with MariaDB

장민규 2022.08.05.

Flutter - GetX를 이용한 상태관리

GetX를 이용한 Flutter 상태관리에 대해 알아보겠습니다.

선요한 2022.08.05.

reindex 성능 및 속도 최적화 방법

Elasticsearch reindex 기능의 특징과 적절한 속도를 내는 방법을 파악해봅니다.

반윤성 2022.07.22.

엘라스틱서치 유사 이미지 검색

엘라스틱서치로 유사 이미지 검색하는 방법을 소개합니다.

선지호 2022.07.08.

Spring for GraphQL

Spring for GraphQL에 대해 알아보도록 하겠습니다.

장민규 2022.06.06.

엘라스틱서치 스냅샷의 5가지 특징

Elasticsearch snapshot의 특징을 파악해봅니다

반윤성 2022.06.03.

Kubernetes 인증서 만료시 갱신 방법

쿠버네티스 인증서 갱신이 되지 않았을 경우 발생하는 오류와 해결방법을 알아봅니다

반윤성 2022.03.28.

로켓챗 설치 및 버전 업그레이드 방법

로켓챗 설치 및 업그레이드 방법에 대해 설명합니다.

선지호 2022.03.18.

Grafana Novatec Service Dependency Graph Panel 사용법

그라파나 노바택 서비스 디펜던시 그래프 패널 사용법에 대해 알아볼 예정입니다.

장민규 2022.03.10.

그라파나 게이지의 Threshold 마커

그라파나에서 많이 사용하는 게이지의 Threshold 마커특성과 헷갈릴 경우 대처방법을 알아봅니다.

송상욱 2022.02.18.

Elasticsearch Update_By_Query 적용 과정

Elasticsearch에서 제공하는 Update_By_Query의 개념과 적용 방법을 살펴보고 적용시 주의해야할 사항과 성능에 대해 알아봅니다.

반윤성 2022.01.12.

프로젝트 CI/CD 개선

안녕하세요. 이번 포스팅은 개발부터 운영 배포까지에 개선점 찾아, 개선하는 방법에 대해 알아볼 예정입니다. 다나와에서는 사내 내부에서 형상관리 도구는 SVN, gitlab이 있고, 오픈소스는 외부 서비스인 github을 통해 관리하고 있습니다. 저희 팀은 gitlab, github 만 사용하기 때문에 해당 프로젝트에 코드검토, 서버 배포 절차에 알아보겠습니다. 그리고 다나와의 오픈소스 운영관리 플랫폼을 사용한다는 가정하에 작성합니다.

김준우 2021.12.31.

Github Actions 사용법

github actions를 사용하여 지속적인 빌드방법에 대해 알아보겠습니다. 다나와에서는 오픈소스로 dsearch 시리즈, service-management 등 범용적인 소프트웨어를 오픈소스로 공개하고 있습니다. 지금까지는 오픈소스를 CI/CD는 사내 Gitlab CI/CD를 통해 github의 소스를 다운받아 빌드 후 이미지를 사내 저장소에 저장하였습니다. 이번에 프로젝트 브랜치 전략, CI/CD 개선을 시작하며 오픈소스의 이미지도 github package로 오픈하기로 결정하였습니다. 이전 포스팅을 통해 package로 이미지 배포 방법에 대해 알아보았고, 이번에는 github actions를 통해 프로젝트 빌드, 이미지 빌드 후 package로 저장하는 방법에 대해 알아보도록 하겠습니다.

김준우 2021.12.28.

Github Package (Container-Registry) 사용법

github에서 Container, RubyGems, npm, Apache Maven, Gradle, NuGet package registry를 제공하고 있습니다. 저희는 Container Registry를 알아보도록 하겠습니다.

김준우 2021.12.27.

sushiswap 분석해보기 (스테이킹 편)

이번 포스팅은 스시스왑의 스테이킹 기능에 알아보도록 하겠습니다. 스테이킹이란 화폐를 은행에 예금하게 되면 일정기간마다 이자가 발생하여 수익을 얻을 수 있습니다. 스시스왑에서도 동일하게 마스터쉐프 컨트렉트를 통해 토큰을 스테이킹하면 이자 토큰이 증가하여 출금때 원금과 함께 이자를 받을 수 있습니다. 앞서 스테이킹을 진행하기위해서는 “sushiswap 분석해보기 (스왑편)”을 내용을 읽어보시면 도움이 됩니다.

김준우 2021.12.24.

sushiswap 분석해보기 (스왑 편)

이번에 포스팅 내용은 blockchain DeFi 중에서 다양한 서비스가 있지만, ethereum Network를 기반으로 하는 분산형 거래소(Decentralized Exchange) 스시스왑(sushiswap)의 주요기능을 알아보겠습니다. 스시스왑은 A Token과 B Token 있을때 A Token으로 B Token으로 교환해주는 기능을 제공합니다. 이 기능은 화폐에서 환전 기능을 동일하다고 볼 수 있습니다. 그리고 Token을 스시스왑 예치 풀에 입금하게 되면 네트워크 블럭생성마다 이자를 발생하게 됩니다. 이것은 화폐에서 예금과 동일합니다. 이렇게 주요 두 기능 스왑, 스테이킹이라는 주제로 solidity의 contract를 분석해보며, truffle을 사용하여 실습해보도록 하겠습니다.

김준우 2021.12.23.

elasticsearch Circuit breaker exception 알람 구성 사례

이번 포스팅은 Elasticsearch 운영 중에 circuit breaker exception 발생시 알림을 구성하는 방법을 알아보도록 하겠습니다. 다나와는 일정 주기로 상품 인덱스를 다시 생성하는 과정, 그리고 상품의 변경사항만 문서를 업데이트하는 과정의 반복으로 인덱스를 운영하고 있습니다. 전체색인이 진행 중 서킷브레이크가 발생하였고, 전체 색인하는 클라이언트에서는 서킷브레이크에러에 처리가 누락이 존재하였고, 전체색인이 정상종료로 진행하는 바람에 운영되어 장애가 발생한 사례입니다. 대응방안중 하나로 알림구성에 포스팅합니다.

김준우 2021.12.17.

엘라스틱 클라우드를 이용하여 로켓챗으로 알람 받기

엘라스틱 클라우드를 이용하여 로켓챗으로 알람 받기

선지호 2021.12.17.

엘라스틱 서치에서 색인된 문서의 사전 분석 내용 업데이트 하는 방법

엘라스틱 서치에서 색인된 문서의 사전 업데이트 기능으로 update_by_query를 사용하는 방법을 소개합니다

선지호 2021.12.06.

influxDB의 flux를 활용하여 기간별 통계 그래프 만들기(grafana)

검색 모니터링 시스템을 구축하여 사용중인 influxDB의 flux query를 사용하여 기간별 추이 그래프를 만들어 보았습니다.

최현복 2021.10.08.

node exporter를 활용한 서버 시스템 모니터링

노드 익스포터를 그라파나 대시보드 추가하여 서버 시스템 메트릭 모니터링을 추가하였습니다.

최현복 2021.10.06.

레디스 모니터링을 위한 대표적인 툴 2가지 알아보기

레디스 모니터링을 위한 대표적인 툴 2가지 알아보기

선지호 2021.09.02.

Elastic Cloud를 활용한 모니터링 및 이상탐지

Elastic Cloud를 활용한 모니터링 및 이상탐지

선지호 2021.08.30.

Elastic Capture The Flag Korea - 보안경연대회

엘라스틱에서 주최한 보안경연대회 참가 후기입니다.

김윤기 2021.08.09.

klaytn 개발 환경 구축

klaytn 개발 환경 구축하는 방법입니다.

선지호 2021.08.05.

다나와 데브옵스 OJT 진행과정

OJT 진행과정과 각 단계별 내용에 대한 안내입니다.

반윤성 2021.07.29.

DANAWA CLOUD IDE 알아보기

독립된 가상 환경에서 개발할 수 있는 IDE를 제공합니다.

반윤성 2021.07.27.

Traefik과 Docker를 활용한 Reverse Proxy 구축

Traefik 기술을 적용하여 도커 컨테이너간의 Reverse Proxy 네트워크를 효율적으로 구축합니다.

반윤성 2021.07.14.

React X Cypress 테스트 기초 셋팅 및 가이드

리액트로 개발된 프로젝트의 테스트 단계에서 유용하게 사용할 수 있는 테스트 프레임워크인 Cypress의 기초적인 사용 방법에 대해 알아봅니다.

반윤성 2021.07.14.

큐 라우터 (Q router) : Q to Q

서비스간 영향도를 줄이기 위해서 중간에 Q 를 이용하여 데이터를 주고 받는 경우가 있습니다. Q의 데이터를 읽어서 처리하는 프로그램이 기존에도 있었지만, 노후화된 프로그램이라서 새롭게 변경하였습니다.

최현복 2021.06.25.

디서치 관리도구 6월 업데이트

DSearch 콘솔과 서버에 기능이 추가 되었습니다.

선지호 2021.06.22.

projector 활용한 엘라스틱서치 플러그인 개발환경 사례

이번에 포스팅 내용은 지난 3월에 출시된 Jetbrains의 Projector IDE를 이용하여 엘라스틱서치 플러그인 개발환경 구성한 사례를 소개합니다. 엘라스틱서치의 플러그인을 개발하거나, 디버깅할땐 엘라스틱서치를 IDE에서 실행이 필수적입니다. 엘라스틱서치를 IDE로 실행에 있어서 환경적인 요소에 따라 실행이 안되는 경우가 있습니다. 엘라스틱서치를 실행을 하기 위해선 JVM 옵션, 설정파일등 구성해야 하기때문에 다양한 변수가 발생할 수 있습니다. 각자의 로컬 환경에 맞게 구성해야되기 때문에 처음구성하는 개발자는 러닝 커브가 높아지게 됩니다. 이러한 러닝 커브를 줄이기 위해 저희는 Projector + Container 조합으로 개발환경을 이미지화하여 개발서버, 로컬환경에서 제한없이 이미지기반으로 개발환경을 구성해보았습니다.

김준우 2021.06.21.

elasticsearch scroll, slice(sliced scroll) 성능 비교

엘라스틱 서치에서 scroll 검색과 scroll 검색에 slice(sliced scroll)를 활용하여 성능 비교"

최현복 2021.06.17.

AWS EC2 인스턴스 자동 시작/중지

이번에 소개 드릴 내용은 AWS의 EC2 인스턴스를 시작과 중지를 자동으로 적용하는방법에 대해 알아보도록 하겠습니다. EC2 인스턴스 활용하기에는 편하고 좋은 도구 이지만, 정해진 시간에 인스턴스를 시작 또는 중지하는 기능을 제공하지 않아, 실수로 인스턴스를 중지 하지 않으면 가동한 시간만큼 과금이 발생하게 됩니다. Lambda와 CloudWatch를 조합하여 ec2 인스턴스에 등록된 태그를 기반으로 인스턴스를 시작/중지하는 방법에 대해 알아보도록 하겠습니다. AWS의 CloudWatch에서 규칙으로 1시간 주기로 Lambda를 호출 되도록 하고, Lambda에서는 인스턴스에 등록된 태그를 해석하여 인스턴스 시작, 종료 호출하게 됩니다.

김준우 2021.05.03.

디서치 관리도구 4월 업데이트

DSearch 콘솔과 서버에 기능이 추가 되었습니다.

선지호 2021.04.28.

캐시 TTL 산정

검색 로그에서 검색 uri 별 hit-time 분석 및 집계 후 캐시 TTL 지수를 산정하기

김윤기 2021.04.14.

검색 모니터링 시스템 구축

검색을 운영하면서 필요한 정보를 한번에 모니터링 하기 위한 시스템을 구축하였습니다."

최현복 2021.04.09.

디서치 관리도구 변경사항 - 20210323

DSearch 콘솔과 서버에 기능이 추가 되었습니다.

김준우 2021.03.23.

동적색인 프로세스 변경 사례

이번에 제휴사에서 대량 처리하기 위한 동적색인 사례를 소개합니다. 기존 구성은 제휴사에서는 변경 데이터가 dynamicIndex(이하 DI) API로 요청이 오게되면, DI에서는 큐에 적재하고, DI 내부 스케줄을 통해 큐의 메시지를 소비합니다. 예전에는 하나의 프로세스를 통해 충분히 대응이 가능하였지만 어느 순간 부터는 큐의 처리량이 부족하여 큐 메시지 소비 전용 프로세스인 dymaicIndexProcess(이하 DIP)를 통해 큐의 메시지 소비량을 높혀 사용하였습니다. 현재는 제휴사 한곳에서 약 1억건 이상의 요청이 오기 때문에 두 프로세스만으로는 소비보단 적재하는 TPS가 크기 때문에 큐에는 늘 소비 되지 못한 메시지가 쌓여 있었습니다. 제휴사에서는 점점 데이터양이 늘어나고 있고, 노후화된 프로세스라 전체 구조를 변경하기로 결정하였습니다.

김준우 2021.03.18.

디서치 관리도구 변경사항 - 20210318

디서치 관리도구 변경사항에 대해 포스팅합니다

선지호 2021.03.18.

그라파나에서 텔레그램으로 알람받기

그라파나에 구성한 대시보드 패널에 알람 규칙을 추가하여 텔레그램으로 알람 받기"

최현복 2021.01.26.

엘라스틱서치 Left Join API 개선사항

지난번 엘라스틱서치 API방식으로 전환이 후 CPU 사용률이 높아 성능개선한 부분에 대해 공유합니다. 그리고 추가된 밀터필드 조건 기능도 소개드립니다. Left Join API의 구성 및 사용법은 아래 링크를 통해 확인 부탁드립니다.

김준우 2021.01.20.

디서치 관리도구 사용법 #14 - 파이프라인

안녕하세요. 이번 포스팅 내용은 다나와에서 개발한 디서치 관리도구(엘라스틱서치 관리도구)에서 파이프라인 메뉴에 대해 소개하는 시간을 가지도록 하겠습니다.

선지호 2021.01.20.

도커 파일 가이드라인

도커 파일을 생성함에 있어서 가이드라인이 필요하다고 생각하여 작성하여 공유를 합니다.

선지호 2021.01.13.

도커 컴포즈 가이드라인

도커 컴포즈를 사용할 때 가이드라인이 필요하다고 생각하여 작성하여 공유 합니다.

선지호 2021.01.13.

엘라스틱서치 Left 조인 (확장 API 방식)

지난번 엘라스틱서치 Left Join Plugin 소개 포스팅을 통해 엘라스틱서치의 플러그인을 소개해드렸습니다. 하지만 엘라스틱서치 버전 7.9.0 부터 현재 최신 버전인 7.10.1까지 엘라스틱서치 플러그인 이슈가 발생하였습니다. 그렇기에 플러그인 방식은 제한된 사용이 되며 엘라스틱서치에 종속적이기 때문에 다른 방식으로 Left 조인 기능을 구현해야 했습니다. 이번에 소개하는 방식은 엘라스틱서치 앞단에 es-tention-api 서버를 두고 _left 앤드포인트를 제외한 모든 앤드포인트를 엘라스틱서치로 포워드합니다. _left 앤드포인트로 접근시 QuerySDL을 해석하여 Parent, Child 각각 검색을 요청 후 응답하는 방식으로 개발해보았습니다.

김준우 2021.01.06.

엘라스틱서치 플러그인 이슈

다나와에선 엘라스틱서치 버전을 기존 7.6.2를 사용하고 있었습니다. 그리고 당시 최신이였던 7.9.1 버전으로 업그레이드를 진행하였습니다. 그리고 잘사용하던 중 알수없는 현상이 발생하기 시작하였습니다. 테스크가 쌓이기 시작하였고, 특정 노드에는 API 호출이 안되는 현상이 발생하였습니다. 어떤 작업을해도 테스크가 해소되지 않았고, 엘라스틱서치 클러스터를 결국 재시작해야하는 상황까지 발생하였습니다. 원인파악을 위해 알아보던 중 엘라스틱서치 플러그인에 제공되는 NodeClient에 문제가 확인되어 공유하기 위해 포스팅하였습니다.

김준우 2020.12.30.

제안검색 조사

다나와는 현재 제안검색을 고려하고 있습니다. 오타로 인해 0건의 결과를 보여주지 않고, 사용자 의도를 파악하여 결과를 보여줌으로써 편의성을 높이기 위함입니다. 구글, 네이버에서는 어떻게 제안검색을 제공하는지와 제안검색 API 종류를 알아보도록 하겠습니다.

김준우 2020.09.09.

Ingest PipeLine 설정을 통한 데이터 전처리

PipeLine 내에 여러 processor를 적용하여 색인 전 데이터를 가공해보기

하선호 2020.09.04.

디서치 관리도구 사용법 #11 - 서버

안녕하세요. 이번 포스팅 내용은 다나와에서 개발한 디서치 관리도구(엘라스틱서치 관리도구)에서 서버메뉴에 대해 소개하도록 하겠습니다.

김준우 2020.08.18.

디서치 관리도구 사용법 #10 - 래퍼런스UI

안녕하세요. 이번 포스팅 내용은 다나와에서 개발한 디서치 관리도구(엘라스틱서치 관리도구)에서 레퍼런스UI 메뉴에 대해 소개하도록 하겠습니다.

김준우 2020.08.18.

디서치 관리도구 사용법 #9 - JDBC

이번 포스팅 내용은 다나와에서 개발한 디서치 관리도구(엘라스틱서치 관리도구)에서 JDBC 메뉴에 대해 소개하는 시간을 가지도록 하겠습니다.

김준우 2020.08.18.

디서치 관리도구 사용법 #13 - 클러스터설정

안녕하세요, 이번 포스팅에서는 클러스터설정 메뉴에 대해 소개하도록 하겠습니다. 클러스터설정에서는 엘라스틱의 클러스터 모든 설정을 확인할 수 있습니다. 클러스터 설정에는 기본설정, 영구설정, 임시설정이 있습니다. 각 설정별로 분류하여 쉽게 확인이 가능 하도록 하였습니다.

김준우 2020.08.18.

디서치 관리도구 사용법 #12 - API

안녕하세요. 이번 포스팅 내용은 다나와에서 개발한 디서치 관리도구(엘라스틱서치 관리도구)에서 API메뉴에 대해 소개하도록 하겠습니다. API 메뉴는 엘라스틱의 _cat API의 요청을 UI로 쉽게 요청하고, 보기 편한 형태로 결과를 확인하는 메뉴입니다.

김준우 2020.08.18.

디서치 관리도구 사용법 #7 - 템플릿

디서치 관리도구 템플릿 메뉴에 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.14.

디서치 관리도구 사용법 #8 - 인덱스

디서치 관리도구 인덱스 메뉴에 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.14.

디서치 관리도구 사용법 #6 - 컬렉션

디서치 관리도구 컬렉션 메뉴에 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.14.

디서치 관리도구 사용법 #4 - 랭킹튜닝

디서치 관리도구 랭킹튜닝 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.13.

디서치 관리도구 사용법 #2 - 사전

디서치 관리도구 사전에 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.13.

디서치 관리도구 사용법 #5 - 클러스터

디서치 관리도구 클러스터 메뉴에 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.13.

디서치 관리도구 사용법 #3 - 분석도구

디서치 관리도구 분석도구 메뉴에 대해 소개하고 사용하는 방법에 대해 설명 하도록 하겠습니다.

선지호 2020.08.13.

디서치 관리도구 사용법 #1 - 소개

디서치 관리도구 사용법에 대해 전체적으로 메뉴를 소개하도록 하겠습니다.

선지호 2020.08.12.

엘라스틱서치 Left Join Plugin 소개

이번 포스팅 내용은 엘라스틱서치에서 제공하는 join을 사용하지 않고, 자체적으로 개발한 Left Join 플러그인을 소개하도록 하겠습니다. RDB에서 join은 아래 이미지 처럼 A, B 테이블이 있을때 조인을 통해 원하는 결과로 조합할 수 있습니다. 엘라스틱서치에서는 아래 이미지에서 나오지 않는 조인 기능을 제공하고있습니다. A를 검색했을때 B의 결과를 가져오거나, B를 검색하면 A의 결과를 가져오는 기능만 제공하고 있습니다. 그래서 A의 결과와 B의 결과를 같이 검색을 하는 방법은 없기 때문에 플러그인을 개발하였습니다.

김준우 2020.08.10.

다나와 검색API 개발을 위한 ElasticSearch - GoClient 선택하기

다나와 검색API를 ElasticSearch로 적용하기 위해 적합한 Client를 찾는다.

하선호 2020.08.04.

엘라스틱서치 인덱스와 샤드 분할

엘라스틱서치의 인덱스와 샤드를 어떻게 나누었는지 그 경험을 나누겠습니다

송상욱 2020.07.21.

FASTCAT-ElasticSearch 테스트 - 검색+동적색인

ElasticSearch과 FASTCAT의 검색+동적색인 비교 테스트.

하선호 2020.07.15.

FASTCAT-ElasticSearch 테스트 - 동적색인

ElasticSearch과 FASTCAT의 동적색인 비교 테스트.

하선호 2020.07.09.

FASTCAT-ElasticSearch 테스트 - 검색

ElasticSearch과 FASTCAT의 검색 성능에 대한 테스트.

하선호 2020.07.06.

FASTCAT-ElasticSearch 테스트 - 색인과 배포

ElasticSearch과 FASTCAT의 색인 및 배포 성능에 대한 테스트.

하선호 2020.07.06.

ElasticSearch로 구성한 오타교정 API 결과 분석

여러 방법으로 오타 교정 API를 통해 교정된 결과를 분석하였습니다.

하선호 2020.06.17.

엘라스틱서치 오타교정 API 만들어보기

엘라스틱서치의 Suggest API를 사용하여 검색 키워드에 대한 교정 키워드를 가져오기

하선호 2020.05.21.

[ElasticSearch] 기본 보안

안녕하세요. 다나와의 김준우입니다. 엘라스틱서치의 클러스터 통신에 암호화를 적용하고, 키바나 로그인을 활성화 해보는 내용을 포스팅하였습니다. 엘라스틱서치 클러스터를 구성하면 기본적으로 보안은 비활성화 상태가됩니다. 비활성화 상태로 사용하게 되면 외부에서 PUT/POST API 또는 키바나를 통해 위협이 될 수 있기 때문에 필수로 보안을 활성화하여 운영해야 됩니다.

김준우 2020.05.20.

Scouter Server Plugin를 통한 Xlog 수집

Scouter Server Plugin으로 Scouter Server의 Xlog 정보를 수집하고 구글 시트로 작성하기

하선호 2020.04.27.

Knative 사용을 위한 비교 테스트

Knative와 Ingress+Deployment, Kubeless 비교

하선호 2020.04.24.

# k8s 도커 레지스트리 설치

이번에 포스팅내용은 도커 레지스트리 구축방법입니다. 이미 도커 허브에 계정이 있다면 저장소가 자동 생성되었지만 이번에는 프라이빗하게 사용할 도커 저장소를 설치해보겠습니다. 레지스트리는 tls적용이 되어야 이미지를 push, pull 이 가능합니다. 이번에 설치할때는 Let's Encrypt의 인증서를 발급받아 레지스트리를 구축하는 방법을 알아보도록 하겠습니다.

김준우 2020.04.14.

dnsmasq와 K8S 적용 사례

이번에 포스팅 내용은 k8s에서 생성된 컨테이너의 호스트파일을 다룰때 불편함과 깃랩의 CI/CD 사용시 POD의 호스트 정보를 변경할때 이슈가 있어 해결 사례를 공유합니다.

김준우 2020.04.14.

GitLab CI/CD cache with Kubernetes

이번 포스팅은 GitLab 과 k8s 연동 후 CI/CD 시 cache 사용방법에 대해 공유합니다. GitLab 에서는 기본 캐시가 비활성화 되어 있습니다. 공식문서에서는 s3, gcs를 사용하하는 방법만 제공하고 있습니다. 임시 캐시하기위해서 퍼블릭 저장소를 사용하기엔 무리가 있어 보여 s3와 API 100% 동일하다는 minio를 사용하여 적용해보도록 하겠습니다.

김준우 2020.04.14.

이벤트 서비스 GCP VM Instance 배포

얼마전에 이벤트 서비스를 GCP의 Cloud Run에 배포하여 서비스예정이였지만, 최종 변경방식은 GCP의 Compute Engine을 통해 배포하는방식으로 진행하기로 하였습니다. 이벤트 서비스를 Compute Engine으로 배포하고 Compute Engine에 로드밸런서를 연결하여 블루/그린 방식의 배포 과정을 포스팅 하도록 하겠습니다. 추가로 다나와에서는 GitLab의 Runner 사용이 증가하고 있어 이번 배포 과정에서도 Runner를 통해 배포하도록 하겠습니다.

김준우 2020.04.01.

2020년 1/3분기 (1~4월) 웹 브라우저 이슈

2020년은 구글 크롬을 필두로 개인정보 보호관련 업데이트가 많이 일어날 것으로 예상됩니다. 영향력있는 소프트웨어가 정책을 제시하면 타 소프트웨어들이 표준처럼 따르는 관례가 있는데요. 이를 근거로 구글의 행보가 표준안 이 될 가능성이 높습니다. 많은 관심이 필요해 보입니다

김명운 2020.04.01.

그라파나를 통한 모니터링 대시보드 구성

프로메테우스가 수집한 노드 익스포터의 매트릭 정보와 PROMQL을 통해 그라파나 대시보드 구성하기"

하선호 2020.03.17.

도커 컴포즈를 이용한 프로메테우스 설치

도커 컴포즈로 프로메테우스 및 UI 대시보드인 그라파나 설치

하선호 2020.03.16.

GitLab CI/CD 사용하기

GitLab에서 제공하는 Runner를 사용하여 저장소에 Push를 하게 되면 자동으로 프로젝트를 빌드, 배포하는 과정을 포스팅하였습니다.

김준우 2020.03.11.

[ElasticSearch] 색인 테스트

다나와에선 검색엔진을 패스트캣을 사용하고 있습니다. 다나와는 차세대 검색엔진을 엘라스틱서치를 고려하고 있습니다. 엘라스틱은 다양한 서비스를 제공하고 있고, 검색/색인 성능도 좋게 평가되고 있기 때문입니다. 이번에 포스팅 내용은 엘라스틱으로 색인성능을 테스트 해보도록 하겠습니다.

김준우 2020.03.11.

크롬 원격 데스크톱 사용하기

사무실이 아닌 외부에서 업무를 해야할 상황이 발생할 때 크롬 원격 데스크톱을 이용하여 원격지에서 연결할 수 있습니다.

하선호 2020.02.19.

이벤트서비스 GCP 전환 PoC

다나와 이벤트 서비스를 클라우드로 전환하기 위한 부하 테스트를 진행하였습니다. 다나와 이벤트서비스는 이벤트가 없으면 아주 적은 트래픽이 발생 하지만, 이벤트가 시작되면 동시에 2만 요청까지 발생됩니다. 대량 처리가 가능한 서버를 구축을 하게 되면 비용이 많이 소모되며 이벤트가 없으면 자원낭비가 발생합니다. 그래서 이벤트 서비스는 구글 클라우드(GCP)에서 제공하는 Cloud Run을 사용해보기 위해 부하 테스트 및 과금 정책에 대해 공유 합니다.

김준우 2020.02.18.

2020년 Vue.js UI 컴포넌트 라이브러리 종류

프론트 개발의 비용을 줄여줄 수 있는 UI 컴포넌트 라이브러리, Vue.js에는 어떤게 있을까요?

최순현 2020.02.15.

Apache Tomcat 쿠키 프로세서

톰캣 버전 증가에 따른 기술 표준이 변화된 내용과 그에 따른 쿠키 오류가 발생했던 원인을 알아보겠습니다.

안성일 2020.02.11.

SVN을 Git으로 마이그레이션

프로젝트를 진행할 때 각자 업무를 나눠서 맡은 부분을 개발하게 됩니다. 각자 개발한 코드 혹은 문서를 하나의 관리 도구에서 통합적으로 버전별로 관리하게 되는 것을 형상관리(Configuration Management) 혹은 버전관리(Version Management)라고 부릅니다. 형상관리 방식에는 크게 중앙집중식과 분산관리식으로 나뉘는데 대표적으로 사용되는 도구가 중앙집중관리식에는 Subversion (이하 SVN) 그리고 분산관리식은 GIT을 사용합니다.

김준우 2020.02.07.

쿠버네티스 가상스토리지(Ceph) 설치

Rook-Ceph는 오픈소스 클라우드 네이티브 스토리지 오케스트레이터로, 클라우드 네이티브 환경과 기본적으로 통합 할 수있는 다양한 스토리지 솔루션 세트에 대한 플랫폼, 프레임 워크 및 지원합니다.

김준우 2020.01.28.

쿠버네티스 고가용성 클러스터 구성

쿠버네티스는 마스터 노드에 내부적으로 API-SERVER를 가지고 있어 마스터 노드를 통해 워커 노드로 통신이 전달됩니다. 대량에 통신량이 발생하게 되면 마스터 노드는 부하를 많이 받아 장애 발생 가능성이 커지게 됩니다. 마스터 노드를 고가용성 클러스터로 연결하게 되면 통신량을 분산시킬 수 있고, 일부가 마스터 노드에서 장애가 발생시 워커 노드의 운영 시스템에는 영향을 줄일 수 있습니다.

김준우 2020.01.28.

Kubernetes 서비스와 인그레스 용도구분

이번 포스팅에서는 쿠버네티스의 서비스와 인그레스의 차이점에 대해서 알아보겠습니다. 쿠버네티스를 처음 접하는 분들은, 간단하게 API 서버를 만들어서 `POD` 를 띄우기까지는 성공하지만, 해당 IP와 포트로 접속이 안되어 당황을 하게 됩니다.

송상욱 2020.01.23.