microservices-demo-multirepo-portfolio

  • MSA 데모를 기반으로 AWS EKS환경으로 배포 자동화
  • Tech : K8S(EKS), MSA, gRPC, CI/CD(CircleCI), Cloudflare, Locust

기존 MSA demo에서 변경점

  • monorepo => multirepo
  • CI/CD 추가(CircleCI)
  • ELB의 CNAME을 지정한 도메인으로 연결(Cloudflare API, CircleCI)
  • GKE => AWS EKS
  • Jaeger support based OpenCensus

Service Architecture

Online Boutique 는 마이크로서비스간 통신에 gRPC를 사용하는 MSA demo project

Architecture of microservices

gRPC의 Protocol Buffer Description은 각 repo의 ./pb

Service Language Description
frontend Go
cartservice C#
productcatalogservice Go
currencyservice Node.js
paymentservice Node.js card info(mock)
shippingservice Go mock
emailservice Python mock
checkoutservice Go
recommendationservice Python
adservice Java
loadgenerator Python/Locust

Screenshots

Home Page Checkout Screen
Screenshot of store homepage Screenshot of checkout screen

Tech Stack

사전 준비

AWS EKS provisioning with budget config

# spot instance 를 이용한 EKS 인프라 설정
eksctl create cluster -f eksctl-spot.yaml
# redis 설치
kubectl apply -f redis.yaml

CircleCI 환경변수

context

  • dockerhub
    • $DOCKERHUB_PASS
    • $DOCKERHUB_USERNAME
  • awsauthdibisis # 사용자의 aws auth 정보
    • $AWS_ACCESS_KEY_ID
    • $AWS_DEFAULT_REGION
    • $AWS_SECRET_ACCESS_KEY

Jaeger 설정

# simplest.yaml
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: simplest
$ kubectl apply -f simplest.yaml