Skip to content
 
 

Repository files navigation

멋쟁이사자처럼 백엔드 스쿨 (3기)

😎 KLover Crew

👨‍👨‍👧‍👦 팀원 소개

윤수근 주선경 오상민 구준휘 이승헌
GitHub GitHub GitHub GitHub GitHub


📌 KLover 프로젝트 개요

😎 KLover 서비스 소개

한국을 방문하는 외국인 관광객들이 겪는 언어 장벽, 정보 부족 등의 문제를 해결하고, 한국의 다채로운 매력을 쉽고 편리하게 경험할 수 있도록 돕는 올인원(All-in-one) 인바운드 관광 플랫폼

문제인식

작년 4월까지 우리나라에 입국한 외국인은 약 274만명으로 지난해 같은 기간에 비해 6배가량 증가했는데요. 다만 한국 재방문율은 50% 수준으로 관광대국들에 한참 못 미친다고 합니다. 처음 한국을 방문하는 외국인 관광객 수는 매년 늘고 있는데 재방문율이 높아지지 않는 것은 그럴만한 이유가 있기 때문이라고 하는데요. 어떤 부분이 외국인들이 한국에 또 오는 걸 주저하게 만들까요?


1. 길 찾는 게 어려워요

구글 맵은 전 세계적으로 유용하지만, 한국에서는 지도 데이터 반출 문제와 정부의 이견 으로 인해 서비스가 매우 제한적이며, 이는 특히 외국인 관광객에게 큰 불편을 초래하고 있다.


2. 민망한 엉터리 영어

한국을 방문하는 외국인 관광객이 늘고 있지만, 공공장소 및 식당 등에서 제공되는 영어 번역이 매우 부실하여 외국인 관광객에게 큰 불편을 초래하고, 한국에 대한 부정적인 인상을 심어줄 수 있다. 특히 한식에 대한 높은 관심에도 불구하고, 한식당의 번역 문제는 더욱 심각한 상황이다.


3. 매력적인 관광지, 관광 코스 없어

한국이 외국인 관광객 유치를 위한 야심 찬 목표를 세웠지만, 매력적인 관광 콘텐츠 부족, 숙박 및 교통 시설 미비, 기타 불친절 문제 등 여러 요인으로 인해 재방문율이 낮다. 관광 매력 국가로 발돋움하기 위한 전반적인 개선이 필요한 상황이다.



🎥 시연 영상

아래 이미지를 클릭하면 시연 영상을 시청할 수 있습니다.



⚙️ 서비스 아키텍처

아키텍처 사진 들어갈 것것



👨‍⚖️ 기술적 의사결정

[이미지 스토리지] AWS S3

  • 도입배경
    • 유저수, 서비스 사용량 증가 등에 따라 저장하는 사진 파일이 많아지면 스토리지 공간을 확장해야 한다. 그렇기 때문에 서비스의 확장성을 고려해 스토리지 공간이 필요한 만큼 동적으로 할당해 효율적으로 사진을 관리할 수 있는 클라우드 기반의 객체 스토리지 서비스가 필요하였다.

  • 기술비교
  • AWS S3 Google Cloud Storage Microsoft Azure Blob Storage
    비용 저렴한 가격 대비 높은 성능 저렴한 가격 대비 높은 성능 비교적 높은 가격
    기능성 높은 내구성 및 가용성 고성능 및 확장성 관리 작업 간소화 기능
    보안성 액세스 제어, 객체 수준 암호화 및 다양한 암호화 방식 제공 액세스 제어, 객체 수준 암호화 및 다양한 암호화 방식 제공 액세스 제어, 객체 수준 암호화 및 다양한 암호화 방식 제공
    데이터 복제 지리적으로 분산된 데이터 복제 가능 지리적으로 분산된 데이터 복제 가능 지리적으로 분산된 데이터 복제 가능
    사용 편의성 AWS Management Console, CLI, SDK 등 다양한 도구를 사용한 구성 및 관리 가능 RESTful API 및 CLI를 사용하여 쉽게 구성 및 관리 가능 Azure Portal, PowerShell, CLI 등 다양한 도구를 사용하여 구성 및 관리 가능

    • AWS S3
      • 장점
        • 저렴한 비용으로 매우 빠르고 안정적인 전송 속도와 데이터 신뢰성을 제공한다.
        • 다양한 객체 타입을 지원하여 많은 종류의 데이터를 저장할 수 있다.
        • 지리적으로 분산 된 데이터 복제 기능을 제공하여 데이터 손실을 방지한다.
        • AWS Management Console, CLI, SDK를 사용하여 구성 및 관리가 가능하다.
      • 단점
        • 트래픽이 너무 많을 경우 비용이 높을 수 있다.

    • Google Cloud Storage
      • 장점
        • 매우 빠르고 안정적인 전송 속도와 데이터 신뢰성을 제공한다.
        • 저렴한 가격에 높은 성능을 제공한다.
        • 지리적으로 분산 된 데이터 복제 기능을 제공하여 데이터 손실을 방지한다.
        • RESTful API와 CLI를 사용하여 쉽게 구성 및 관리할 수 있다.
      • 단점
        • AWS S3와 비교해 객체 타입 지원 범위가 제한적이다.

    • Microsoft Azure Blob Storage
      • 장점
        • 관리 작업을 간소화하는 기능을 제공해서 관리 작업을 자동화할 수 있다.
        • 암호화, 로그 기록 및 액세스 제어 등 다양한 보안 기능을 제공한다.
        • Azure Portal, PowerShell, CLI를 사용하여 구성 및 관리가 가능하다.
      • 단점
        • 비교적으로 높은 가격으로 서비스를 제공한다.

  • 최종결정
    • S3, Google Cloud Storage, Microsoft Azure Blob Storage 세 가지 클라우드 스토리지 서비스는 성능, 기능 및 보안 측면에서 찰칵 프로젝트에 적용할 때에 큰 차이가 없다.
    • 찰칵 프로젝트는 AWS의 RDS, EC2, CloudFront와 같은 다양한 서비스를 사용하고 있어 비용 관리 측면에서 효율적으로 할 수 있고, 사용자 친화적인 API와 SDK를 제공하여 접근성이 높으며 상세하고 이해하기 쉽게 정리된 문서를 통해서 신속하게 필요한 정보를 찾고 문제를 해결할 수 있다는 점에서 S3를 선택하였다.


[CI/CD] GitHub Actions

  • 도입배경
    • 직접 테스트 코드를 실행하고 수동으로 배포를 하는 번거로움이 있었다. 개발 외에 소요되는 시간을 단축하고자 해당 과정을 자동화하기 위해 도입했다.

  • 기술비교
  • GitHub Actions Jenkins Travis CI
    설치 및 설정 GitHub 저장소 내 워크플로우 파일 작성으로 간단히 설정 가능 별도의 서버와 플러그인 설치 필요 GitHub 저장소와 연동하여 간단히 설정 가능
    비용 무료 티어 범위(월별 2000분) 초과 시 유료 서버 유지 비용 발생 공개 저장소는 무료
    비공개 저장소는 유료
    트리거 설정 매우 유연 매우 유연 유연
    지속적 통합 지원 지원 지원
    지속적 배포 지원 지원 지원
    테스트 병렬화 지원 지원 지원
    사용 언어 YAML Java Ruby

    • GitHub Actions
      • 장점
        • 실행을 트리거하는 방법으로 다양한 이벤트를 지원해 매우 유연한 트리거 설정이 가능하다.
        • 일정 범위 내 무료로 이용이 가능하다.
        • GitHub와 연동이 원활하다.
      • 단점
        • 특정 플러그인 및 확장이 부족하다.
        • 다른 CI/CD 툴에 비해 사용자가 설정할 수 있는 옵션의 범위가 적다.
        • 상대적으로 새로운 기술이기 때문에 자료가 부족하고 커뮤니티가 작다.

    • Jenkins
      • 장점
        • 다양한 플러그인과 인터페이스를 지원한다.
        • 1700개가 넘는 플러그인으로 폭이 넓은 사용자 설정을 할 수 있다.
        • 매우 넓은 커뮤니티를 가지고 있어 자료 검색에 용이하다.
      • 단점
        • 설정이 쉽지 않다.
        • 보안 및 안정성 이슈가 발생할 수 있다.
        • 대규모 프로젝트에서 많은 자원을 소비하고, 설정이 잘못되면 빌드가 느려질 수 있다.

    • Travis CI
      • 장점
        • 설정이 간단하여 사용자가 쉽게 세팅할 수 있다.
        • 단순한 빌드 프로세스에 적합하다.
        • 커스텀 빌드 환경을 지원한다.
      • 단점
        • 복잡한 빌드 파이프라인을 구성하기에는 상대적으로 제한적이다.

  • 최종결정
    • GitHub Actions는 GitHub에서 제공하는 서버리스 CI/CD 서버이기 때문에 Jenkins, Travis CI와 달리 호스팅이 따로 필요 없다. 그렇기 때문에 CI/CD 파이프라인을 실행하는 비용이 크게 감소한다.
    • 찰칵 프로젝트는 Git 원격 저장소를 GitHub로 사용하고 있어서 GitHub와의 연동이 매우 원활한 데다가 무료로 이용할 수 있으며 접근성이 좋은 GitHub Actions를 이용해 CI/CD를 도입하는 것으로 결정했다.



🗂 프로젝트 구조

디렉토리 구조 들어갈 것



🛠 설계

ERD
API


🕵️‍♂️ 트러블슈팅

트러블슈팅 하나씩 채워 나갈 것것



😭 이번 프로젝트에서 보완해야 할 점



🤭 이번 프로젝트를 하며 새롭게 배운 것



About

CI/CD_테스트

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages