Skip to content

mochangil/ts-infra

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

278 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

맞춤형 초개인화 레시피 서비스


🔖 프로젝트 개요

  • 주제 : 사용자가 보유한 재료와 선호도를 기반으로 레시피를 추천해주고, 상황에 맞는 레시피로 변형하여 제공해주는 서비스
  • 대상 : 한정된 상황에서도 다양한 레시피를 이용해 요리하고 싶은 1인 가구

1

7 8

🔗 주요 기능

1️⃣ 식재료 관리

  • 내가 보유한 식재료를 등록하고 제거할 수 있습니다.
  • 보유한 식재료 현황을 알 수 있습니다.
  • 유통기한을 설정하여, 유통기한이 지난 식재료는 폐기 처리됩니다.

2️⃣ 레시피 추천

  • 신체 조건, 보유한 식재료를 기반으로 레시피를 추천해줍니다.
  • 여러 범주에서 선호하는 레시피 태그를 설정합니다.
    • 한식, 양식, 중식 등
    • 건강식, 고단백, 채식 등
    • 구이, 볶음, 찜, 튀김 등
  • 알레르기 식재료를 설정해 포함되지 않도록 합니다.

3️⃣ 나만의 레시피 생성

  • 추천받은 레시피, 혹은 선택한 레시피를 나만의 레시피로 변형합니다.
  • 저렴하게, 건강하게, 한식풍으로, 양식풍으로 등으로 레시피를 변형할 수 있습니다.
  • 변형된 레시피는 레시피 보관함에 저장됩니다.

4️⃣ 커뮤니티

  • 레시피 리스트에서 마음에 드는 레시피를 스크랩할 수 있습니다.
  • 카카오톡 공유하기 버튼을 눌러 친구 혹은 채팅방에 레시피 링크를 공유할 수 있습니다.

🌈 개선 사항

1️⃣ 클러스터 Scale-Out 속도 개선 - 새로운 Pod running 까지의 시간 48% 단축


문제 상황

  • 기존에는 Cluster Autoscaler(CAS) + Auto Scaling Group(ASG) 조합을 통해 노드 오토스케일링을 구성
  • 새로운 노드 생성 + 파드 스케줄링까지 평균 90초 이상 소요
  • 트래픽이 급증하는 이벤트 발생 시, 노드 생성 지연으로 인한 서비스 불안정성 우려

1. nodeAffinity 설정을 통한 워크로드 분리

  • 워크로드 특성에 따라 미리 지정된 노드 스펙에만 스케줄되도록 nodeAffinity 설정
  • 새로운 노드 생성 방식이 CAS -> ASG -> EC2 API로 간접 호출하는 방식이기에 느림
  • kube-apiserver의 상태를 주기적으로 스캔(10s ~ 30s)해서 Unscheduled Pod(pending) 감지
  • scale out 상황은 덜 일어나지만, scale out 속도는 개선되지 않음.

2. Karpenter 도입

  • 새로운 노드 생성 방식이 Karpenter -> EC2 API로 직접 호출하는 방식이기에 빠름
  • kube-apiserver에서 Pod 리소스를 watch하여 Unscheduled Pod(pending) 발생시 즉시 감지
  • EC2 API를 직접 호출하기에 scale out뿐 아니라 scale up / down도 가능
  • 비효율적인 노드를 자동 제거하여 비용 최적화 유도
    • NodePool CRD의 consolidationPolicy, consolidateAfter 설정

결과

image image

2️⃣ App of Apps 패턴을 통한 ArgoCD UI 및 배포 관리 체계 개선


문제 상황

  • 기존에는 단일 ArgoCD Application으로 클러스터 전체 리소스를 관리
  • 공동 작업자의 특정 워크로드 배포가 전체 클러스터에 영향을 줄 수 있는 구조
  • UI 상에서 각 워크로드의 배포 상태를 명확하게 구분하거나 추적하기 어려워 관리가 비효율적

App of Apps 패턴 도입

  • Parent Application이 여러 Child Application을 참조하는 App of Apps 구조로 전환
  • 각 워크로드(서비스, 미들웨어 등)를 독립 ArgoCD Application으로 구성하여 분리 관리
  • 기존 Helm기반 관리방식은 각 서비스별 kustomization 설정파일로 전환하여 구조를 명확하게 하고, 가독성을 향상
  • 공동 작업자의 작업 범위가 각 워크로드로 한정되어, 영향 범위 최소화 및 책임 분리 가능

결과

image image

🍿 결과물


14 15

About

tasty-savings infra repository Resources

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Mustache 88.2%
  • Smarty 10.3%
  • HCL 1.5%