본문 바로가기

이커머스에서 검색엔진이 필요한 이유 이커머스에서 검색엔진이란, 사용자들이 쉽게 상품을 검색할 수 있게 해주는 기술을 의미한다. 상품 검색을 아래와 같이 DB에 상품명을 단순 조회하는 방법으로 생각할 수 있지만, 이 방식은 몇가지 한계가 있다. SELECT * FROM products WHERE product_title LIKE '%{search_query}%' 1. 상품명이 정확하게 일치해야 상품을 조회할 수 있다. 위와 같은 쿼리로 "리버시블 무스탕”을 검색하면, "램스울 리버시블 숏 무스탕”이라는 상품은 검색할 수 없다. 완전 일치되는 상품만 검색할 수 있기 때문이다. 2. 검색 결과를 가중치에 따라 정렬할 수 없다. 정확도순 (계절/키워드 가중치 등), 추천순 등을 반영하기 어렵다. 3.하나의 속성에 대한 검색만 가능하다. 위의 쿼리..
(Django) Django에서 Thread를 다룰 때 주의할 점 💡한줄 요약 Django 스크립트에서 Thread를 사용하는 경우, Thread가 종료될 때 명시적으로 DB Connection을 닫아주는 것이 좋다. Djagno에서 Thread를 사용할 때, DB Connection이 관리되는 방식 Django에서 DB에 접근하는 Thread를 사용하는 경우, Thread마다 새로운 DB Connection을 생성된다. Django는 request가 종료될때, request_finished signal을 발생시켜 지난 DB Connection들을 모두 닫는다. ( 참고 - DB Connection을 관리하는 방법 ) 즉, Thread에서 만들어진 DB Connnecion은 Thread를 실행시킨 메인 프로세스가 종료될 때 닫힌다. import threading fro..
2019년 회고 슬기로운 직장생활 멋진 제품 만들기 난 현직장에서 만드는 제품을 좋아한다. 같은 기능이여도 멋지게 디자인되고 운영되는 모습을 보면 더 보람차고는 한다. 2018년 5월, 현직장에 입사하던 당시, 내 목표는 최소 3개의 신규 피쳐를 만드는 것이였다. 작년에는 경매라는 실험적인 서비스를 출시했었고, 올해에는 동영상 플랫폼을 준비했다. 처음에는 신규 아키텍처와 프랙티스 도입이 어색하고, 어렵게 느껴졌었다. 그런데 백엔드 동료들과 많은 토론을 하고, 기술 리서치도 하다보니 플랫폼에 대한 이해도가 쑥쑥 올라갔다. 🏋️ 이 과정 중에 새로 실험하고, 학습하고, 성장한 것들이 많았다. 이렇게 학습한 내용들은 기존 애플리케이션에도 전파되고 있다. 아래와 같은 것들을 시도했었다. 😌 포스트맨을 팀단위로 활용하기 mock..
[APM]Elastic APM Agent 튜닝하기 최근에 회사에서 Elastic APM을 도입했다 ! 호호 🙉 쌩으로 도입한 후, 1주일 지켜본 결과. 몇가지 튜닝이 필요한듯하여 관련 자료를 찾아보았다! ( 튜닝을 안하니 APM Queue가 가득 찼다는 오류가 난다 🙈 ) 1. Sample Rate APM 에이전트에서 기본적으로 샘플링된 트랜잭션을 수집하긴 하지만, 수집 비율을 조정할 수 있다. transaction_sample_rate 설정을 조정하면 스토리지 비용과 APM 운영으로 인한 부하를 줄일 수 있다. 100% 샘플링을 하더라도 Agent가 API 응답시간에는 영향을 미치지 않는다. 그리고 샘플링되지 않은 트랜잭션이더라도 응답시간 같은 기본 정보들은 수집된다. https://www.elastic.co/guide/en/apm/agent/java..
동영상 플랫폼 이해하기 (2) - AWS MediaConvert AWS 미디어 컨버트란? 파일기반 콘텐츠를 여러 디바이스에 송출할 할 수 있도록 파일을 변환해주는 프로그램이다. File based Transcoding이란? 영상 콘텐츠 파일에 영상 변환과 압축, 패키징, 접근 권한 제어를 수행한다. 영상 변환 영상 파일의 해상도를 낮춰서 파일을 압축하거나, 파일을 여러개로 분할해주는 역할을 수행한다. Adative Streaming을 위하여, 네트워크 대역폭별로 내려줄 영상 파일을 지정할 수 있다. 영상의 썸네일 이미지를 추출할 수 있다. 영상 음성 파일을 추출해준다. 영상 파일 포맷을 변환해준다. 예를 들어, m2ts 포맷 영상 파일을 hsl, mp4 파일으로 변환해준다. 패키징 여러 디바이스 타입에서 영상파일을 사용할 수 있도록 영상 파일을 패키징을 한다. 접근 ..
동영상 플랫폼 이해하기 (1) - HLS 이번 포스팅에서는 스트리밍 동영상 플랫폼을 구성하기 위해 필요한 사전 지식을 정리하고자 합니다. HLS이란? HTTP으로 영상 스트리밍을 할 때 사용하는 프로토콜을 의미합니다. 이 프로토콜은 2009년에 애플에서 공개한 표준이며, 현재는 많은 플랫폼에서 HLS 프로토콜을 지원하고 활용하고 있습니다. HLS 특징 HLS 프로토콜을 사용하면 네트워크 상태에 따라 영상 화질을 선택할 수 있는 Adaptive Bitrate Streaming을 사용할 수 있습니다. 그리고 클라이언트에서 영상을 청크 단위로 쪼개서 다운받을 수 있고, 부분 재생을 할 수 있는 기능도 제공합니다. 이러한 특징 덕분에 사용자는 영상 재생 시, 전체 영상 파일을 다운받지 않아도 되게 되었습니다. 그리고 특정 재생 위치부터 영상을 보는 경..
(Gitlab CI) Gitlab에 테스트 CI 연동하기 - Django + Postgresql 배경 최근에 신규 프로젝트를 진행하면서, 코드의 구조를 변경하는 경우가 잦아졌다. 빠른 사이클로 기능을 구현하다보니, 회귀 테스트를 못하게 되는 경우가 빈번해졌다. 그러면서 잘 동작하던 코드들이 고장나는 경우가 많아졌고, 디버깅으로 인한 삽질이 늘어나기 시작했다. 이런 고통의 루프에서 벗어나고자 gitlab ci으로 테스트빌드 자동화를 적용해보았다. gitlab-ci 장점 gitlab ci에 테스트 자동화를 적용하면, gitlab에 코드를 push할 때마다 자동으로 테스트코드를 돌려준다. 그리고 풀리퀘스트를 날릴 때에도 자동으로 돌려주고, 성공/실패여부도 자동으로 알려준다 😄 이해만 한다면, gitlab ci는 꽤 쉽다. gitlab ci 준비물 a. gitlab runner gitlab ci에 등록한 ..
elasticsearch와 RDB 데이터 저장하기 #시작 오늘은 엘라스틱서치 기술 블로그에서 흥미롭게 읽었던 자료를 함께 살펴보는 시간을 가져보려고 합니다. 설명드릴 블로그 포스팅은 Keeping Elasticsearch in Sync입니다. https://www.elastic.co/kr/blog/found-keeping-elasticsearch-in-sync#the-bulk-api-a-must-for-most-applications Keeping Elasticsearch in Sync One of the trickiest parts of integrating Elasticsearch into an existing app is figuring out how to manage the flow of data from an authoritative data ..