1. Serverless Application
CI/CD on CircleCI
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
2. Byun Kyuhyun
Working at a Startup
CircleCI Korea User Group Organizer
AWSKRUG Serverless Group Organizer
Interested in...
- DevOps
- Serverless
- Container
- AWS
- Well architected service
- Node.js
- Golang
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
3. First CircleCI Meetup in Korea
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
첫번째 CircleCI Meetup을 준비하였습니다.
DevOps에 관심이 많으실거라 생각합니다.
많은 부분들을 자동화하고, 이를 통해 개발 기간을 단축시키거나 공부할 수 있는 시간을 더욱 갖고 싶을 것입니다.
또한 운영상의 이슈들을 간소화하고 싶으실 겁니다.
오늘 CircleCI Meetup에서는 기초적인 CircleCI 특징을 다뤄보고,
나아가 CircleCI Meetup에서 어떤 내용을 중점적으로 생각할지 알아봅시다.
4. Why CircleCI?
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
우린 CI/CD를 위한 도구로 많은 것들을 접했습니다.
CircleCI 와 함께 Jenkins, TravisCI, Bitbucket Pipeline, Gitlab Pipeline 등 많은 것들이 DevOps 도구로 활용되고 있습니다.
이 뿐만 아니라 각 Cloud Vendor에서는 자체 Pipeline 도구들이 있습니다.
AWS는 Code Pipeline, Azure에서는 최근에 DevOps 도구들을 한번에 사용할 수 있게합니다.
그렇다면 저는 왜 CircleCI를 택했을까요?
5. How about Jenkins?
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
Jenkins는 어떨까요?
많은 분들이 사용하고 있을 겁니다.
회사 내부의 빌드시스템은 대부분 Jenkins를 사용한다고 해도 무방합니다.
어떠한 것들이 Jenkins에서 벗어나고 싶게 만들까요? 직접 설치, 운영 관리, 비용, 수많은 옵션 및 플러그인이 많은 일을 필요로 합니다.
6. How about
AWS CodePipeline?
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
만약 AWS CodePipeline을 사용한다고 가정해보겠습니다.
AWS 계정이 있어야겠죠? 그 계정에는 보통 서비스가 동작하고 있습니다.
CodePipeline에 접근해야하는 사람들은 AWS Console을 통해 접근합니다.
많은 서비스들이 분포되어 있고, 그중에 CodePipeline을 선택해야 합니다.
CodePipeline을 사용한다는 것은 AWS Console에 대한 접근권한을 줍니다. 또한 로그인 절차도 복잡합니다.
그렇게 달갑지 않은 상황들이 발생할 수 있습니다. 예를 들어, 다른 AWS Resource를 구경할 수도 있습니다.
물론 SA가 IAM을 잘 아는 사람이라면 그렇지 않겠지만, 많은 회사는 그렇지 못합니다.
그리고 Slack Webhook을 생성하는 것도 별도로 Lambda를 통해 서비스를 구축하여 알림을 받습니다.
상당히 까다롭습니다.
7. CircleCI는 이러한 문제점에 대해서 도움을 줄 수 있습니다.
이젠 Docker와 같은 Container기술이 발달함에 따라 독립된 빌드환경을 이미지로 가지고 있을 수 있습니다.
CircleCI는 빌드 환경을 Container Image로 사용하고, 얼마든지 커스터마이징을 할 수 있습니다.
또한 빌드 시간 단축을 위해 이전 빌드환경과 바뀌지 않은 중복적인 작업의 경우에 빌드 환경을 캐싱할 수 있습니다.
이는 Docker Container의 기술을 도입함으로써 가져갈 수 있는 장점입니다.
CircleCI
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
8. CircleCI
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
Pipeline을 Service로 제공합니다. Workflows라고 불리는데, 옵션이 아주 간결합니다.
빌드할 브랜치를 필터링 할 수 있고, 승인 기능을 통해 다음 단계로 넘어가는 것을 수동으로 진행할 수 있게 합니다.
그리고 무엇보다 좋은 것은 빌드 서버를 직접 운영하지 않아도 된다는 것입니다.
직접 운영한다는 것은 생각보다 많은 이슈들을 동반합니다.
단지 CircleCI에 SignUp을 하면, 얼마든지 사용할 수 있습니다.
빌드서버 운영 비용을 줄일 수 있습니다.
별도의 서비스로 운영되기 때문에 접근이 AWS Console이나 Azure Console등 Cloud Vendor의 UI보다 간결합니다.
CI/CD에 집중할 수 있도록 도와줍니다.
또한 MacOS 빌드를 지원합니다. Mac 전용 앱이나 iOS 앱을 만드는 분들에게 좋은 점이라 생각합니다.
9. Let’s build
Serverless Application
on CircleCI
2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
Serverless로 빌드되는 환경은 특별합니다.
AWS Lambda를 예로 들어보겠습니다.
소스코드만 배포하면 동작하는 것으로 알고 있습니다.
대표적인 AWS의 Serverless Service입니다.
하지만 실제로 로컬에서 동작했는데, 배포하면 동작이 되지 않는 경우가 있습니다.
OS마다 아키텍처 형태 및 타겟파일(dll, so)이 다르기 때문입니다. 적절한 형태로 빌드를 해주어야 합니다.
CircleCI는 컨테이너 기반으로 빌드가 이루어지기 때문에 필요한 컨테이너 이미지를 빌드환경으로 사용하면 됩니다.
10. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
lambci에서 제공해주는 Lambda 런타임에 대한 도커 이미지입니다.
11. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
CircleCI에서 각 빌드 환경에 대해서 환경변수를 설정할 수 있습니다.
12. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
CircleCI Config에서 하나의 Job에 대한 샘플 코드입니다.
13. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
CircleCI Config에서
Workflow 예제입니다.
14. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
CircleCI 콘솔에서 여태까지 진행했던 Workflows의 내역을 확인할 수 있습니다.
15. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun
Workflows에 표현되어 있는 Pipeline의 예제입니다. hold를 통해 관리자가 승인 절차를 넣을 수 있습니다.
16. 2019.05.14 | CircleCI Korea User Group | Serverless CI/CD on CircleCI | Byun Kyuhyun