Upgrade to Pro — share decks privately, control downloads, hide ads and more …

당근 개발자 플랫폼은 어떤 문제를 해결하고 있는가?

Outsider
January 10, 2024

당근 개발자 플랫폼은 어떤 문제를 해결하고 있는가?

배포 시스템으로 시작해서 내부 개발자 플랫폼으로 발전하면서 그동안 어떤 고민을 했고, 어떤 문제를 해결하려고 했는지를 설명합니다.

Outsider

January 10, 2024
Tweet

More Decks by Outsider

Other Decks in Technology

Transcript

  1. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR Push Image
  2. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Push Image Update image tag
  3. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Argo CD Push Image Update image tag Out of Sync
  4. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Argo CD Kubernetes Cluster Push Image Update image tag Sync Out of Sync
  5. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Argo CD Kubernetes Cluster Push Image Update image tag Sync Out of Sync AWS Parameter Store
  6. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Argo CD Kubernetes Cluster Push Image Update image tag Sync Out of Sync AWS Parameter Store SRE: ୡӝ ࢸ੿
  7. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Argo CD Kubernetes Cluster Push Image Update image tag Sync Out of Sync AWS Parameter Store SRE: ୡӝ ࢸ੿ SRE: ࢲ࠺झ য஠਍౟ ࢸ੿/IAM সؘ੉౟
  8. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action g Repo for Argo CD Argo CD Kubernetes Cluster Sync
  9. v1 운영 중 v2로 변경 제출 desired state 동기화 v1

    v2 rollout 완료 Argo CD의 동기화 완료
  10. v1 운영 중 v2로 변경 제출 desired state 동기화 v1

    v2 rollout 완료 Argo CD의 배포 완료 엔지니어가 기대하는 배포 완료
  11. 90%

  12. g c Repo GitHub Action g c Repo GitHub Action

    g c Repo GitHub Action AWS ECR g Repo for Argo CD Push Image Update image tag
  13. MVP

  14. type: v1/appservice services: app: image: app ports: - name: http

    port: 8080 healthcheck: type: http httpPath: /api/healthy port: 8080 interval: 10 startPeriod: 30 images: app: dockerfile: ./Dockerfile routes: - name: http protocol: http host: - scope: internal backend: - service: app port: http
  15. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [

    "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3 ::: test-service-bucket", "arn:aws:s3 ::: test-service-bucket /* " ] } ] } type: v1/appservice services: app: role: app-role roles: app-role: .deploy/policies/app.json
  16. “ ” 기본적으로 SRE팀은 엔지니어링에 초점을 맞춘다는 점이 가장 중요하다.

    끊임없이 엔지니어링을 추구하지 않으면 업무 부담이 증가하여 그 부담을 나누기 위해 더 많은 인력이 필요하게 되고 결국에는 서비스의 크기에 따라 전통적인 운영 업무를 담당하는 인력이 기하급수적으로 늘어나게 된다. https://sre.google/sre-book/table-of-contents/
  17. “ ” 이러한 숙명에서 벗어나려면 서비스를 관리하는 팀은 코드를 작성해야

    한다. 그렇지 못하면 늘어나는 일감에 파묻히게 될 뿐이다. 그래서 구글은 SRE팀에 티켓, 전화 응대, 수작업 등, 소위 '운영' 업무에 최대 50%의 시간만 투입하도록 정해두고 있다. https://sre.google/sre-book/table-of-contents/