ebay 아키텍처

https://rnd.ebay.co.il/cwsd.php?Z3AuPTQ0Pg/NTQ/R0w-TEAocWx6bChfZmB-bmB2f3VmbXN2PGRhdA.pdf



ebay cI 아키텍처에 대한 좋은 설명이 있다.




# 로컬 개발 환경

Requirements

• Developer should be able to run the services on his development machine

• There should be isolation between development environments – no shared resources

• Developers shall use the same dependencies (DB version, etc.)

• How

• Running dependencies locally using Docker (databases, services, etc.)

• Use docker-compose files with preconfigured settings (e.g. DB credentials, etc.)

• Custom CLI tool to ease developers’ daily work (automate common tasks)

• Development environment related files are managed in a dedicated git repository


# CI pipeline

How

• Detailed notifications over email and Slack (where / who / what / …)

• Verbose output during the build

• Pull request validation + GitHub integration (trigger validation job, update the pull request, etc.)

• Use Jenkins Multibranch Pipeline jobs

- Pipeline as code (job configuration should be part of the codebase)

- Auto detects branches (new and deleted)

- Triggered on push (using GitHub webhook)

- Use Jenkins Shared Pipeline Libraries for code reuse (https://github.com/ebay/Jenkins-Pipeline-Utils »)

- Spin-up dependencies using Docker (Jenkins is running on Kubernetes…)


# key


Automate as much as possible

• Keep isolation (developers, environments, build runs, etc.)

• Define test boundaries

• Local Development Environment

• Should be easy and quick to setup, maintain and run

• Should be aligned across all developers

• CI

• Should provide quick feedback on all branches

• Should help protecting important branches

• CD

• Should give high confidence

• Should be auditable

Posted by 김용환 '김용환'