inblog logo
|
jaeminlog
    SILD 운영 가이드

    SILD 서비스 개요

    유재민's avatar
    유재민
    Apr 04, 2024
    SILD 서비스 개요
    Contents
    OverviewArchitecture

    Overview

    AWS 기반에서 운영되는 프로젝트로 크게 EC2, OpenSearch, S3, CloudFront, RDS, Kinesis 를 사용했다.

    • EC2

      • EC2(STAGE)는 운영 반영 전 테스트를 위한 서버를 구축했다.

      • EC2(PROD)는 운영에 사용되는 서버로 jenkins docker는 1개만, 나머지 docker는 상황에 맞게 N개로 구성될 수 있도록 구축했다.

      • EC2 인스턴스 하나에 여러 도커 컨테이너를 생성하고, nginx를 통해 로드밸런싱 및 각각의 도커에 리버스 프록시로 통신하도록 구성했다. 또한 STAGE의 경우 사내 ip 외에 접근이 안되도록 whitelist ip를 설정했다. nginx설정(링크)

      • integration server

        • nodeJS 기반 typeorm, routing-controllers 활용한 controller - service -repository 계층 구조 WAS를 구성했다.

        • API의 외부 노출을 막기 위해 모든 요청은 정해진 도메인(https://buy.sild.app 등등)에서만 호출되게 node express의 cors 설정에서 차단했다.

        • integration 서버의 경우에는 pm2를 활용하여 N개의 인스턴스로 구성될 수 있게 했다. 또한 무중단 서비스를 위해 새 버전 배포시 rolling을 통한 무중단 배포가 가능하도록 설정했다.
          Blue/Green 배포도 고려하였으나, 비용 문제로 EC2 인스턴스 갯수를 자유롭게 조절하기 힘든 상황이라 적용하지 않았다.

        • 테스트 및 코드 커버리지는 mocha, chai를 통해 점검했다.

      • so

        • vue v3 기반, 대시보드 구성 라이브러리는 primevue로 어드민 페이지를 구축했다.

        • 관리자를 위한 각종 기능(회원관리, 상품관리, 마켓관리 등등)과 하위 관리자를 위한 메뉴, 기능의 권한부여를 가능하게 했다.

        • 대량 처리를 위해 특정 기능은 Excel import로 일괄 처리, 수출 신고 정산을 위한 외부 전달용 export 가 되도록 구현했다.

      • recommend

        • 관련상품 추천을 위한 python3, flask 기반 WAS를 구성, sklearn 라이브러리로 머신러닝을 구현했다.

        • 주기적으로 추가/변경되는 상품데이터의 상품명, 카테고리, 설명, 소재 등 필요부분을 가중치를 나눠서 학습시켰다.

        • 패션 의류/잡화 특성상 필요한 언어사전을 추가로 구축 및 주기적으로 튜닝했다.

        • 카테고리 분류에도 머신러닝을 활용했다.

    • RDS

      • 데이터의 백업 및 복구 등 소규모 개발자로 원활한 처리가 어려울 것을 감안하여 mariadb 데이터베이스를 직접 구축하지 않고 RDS 를 활용했다.

      • 공용 테스트 DB를 운영과 분리하여 사용했다.

    • S3

      • 카페24, 메이크샵 등 API 연동을 통해 수집되는 이미지 파일들을 저장했다.

      • CloudFront를 활용하여 각종 웹사이트를 제공했다.

        • sild.app, buy.sild.app, partners.sild.app, https://cafe24sync.sild.app, https://guide.sild.app/

    • OpenSearch

      • 각종 검색, 로깅 활용을 위해 ElasticSearch기반 OpenSearch를 사용했다.

      • Kinesis를 통한 추적 정보를 저장하여 그래프 등 리포트로 생성했다.

    • Kinesis

      • 유저의 행동패턴 분석을 위해 Kinesis를 통해 데이터를 수집했다.

    Architecture

    Share article
    Contents
    OverviewArchitecture

    jaeminlog

    RSS·Powered by Inblog