Simplify DevOps

Bill Wang
Anthony Sceresini
Project targets
- Multiple develop environments
- Same pipeline for QA and Prod
- Container service on AWS ECS
- Simple interface
- Central logging
- Save cost (My personal goal)
Buildkite
Simplify CI/CD pipelines
Pros
- Lightweight CI/CD pipeline tool
- Build Agents in each aws account
- Full-stack agent service deployment
- Can run anything you can run in Linux Docker containers
- Spot instances
- Scheduling stop and start agents
- Scheduling build jobs
- Horizontal Scaling and Vertical scaling
Cons
- No full-stack deployment for Windows agents
- Application repositories need be split
- Agent build prerequisites are not well documented.
- Agents need be assigned to each step
- Can't group build jobs
- Some features, such as Slack notification, can only be enabled by buildkite admin.
Improvement
- Taxonline Command line interface (tocli), script to active build jobs via API
- Write a step-by-step document on how to create Buidkite agents at https://myobconfluence.atlassian.net/wiki/display/Avengers/Create+buildkite+agents
Log Central
Simplify logging
Pros
- A middleware layer to reduce the complexity to setting logging
- Manage service, provided by PE team
- Reduce the implement time from several days to less than one hour.
# Terraform configuration
resource "aws_cloudwatch_log_subscription_filter" "logfilter" {
name = "${var.name}-logfilter"
log_group_name = "${aws_cloudwatch_log_group.applogs.name}"
filter_pattern = "."
destination_arn = "${var.destination_arn[var.region]}"
}
Cons
- Splunk indexes are not created automatically
- To get Splunk index permission takes time, need ITS team involved
Terraform
Simplify Infrastructure as Code
Pros
- Very active open source project
- Write, Plan, and Create Infrastructure as Code
- Tool to build Immutable infrastructure
- Simple HCL language vs Json CFN templates
- Official docker images with different terraform versions
Cons
-
Hashicorp doesn't have a good qa/build/release process for their software and does not follow semantic versioning rules.
-
"terraform init" isn't compatible between 0.9 and 0.8. Now they are splitting providers and will use "init" to install providers as plugin in version 0.10
Improvement
AWS ECS
Simplify container management
Pros
- EC2 Container Service (ECS) is the recommend way to run Docker on AWS
- AWS Container Registry (ECR)
- No need to manage database
- ECS Cluster
- container scaling
- Support API as other aws services
- Logging to Cloudwatch
- Can have pure terraform codes.
Cons
- Suitable for small and medium projects
- Not latest Docker version
- ECS agent disconnects periodically (We don't see this issue in our projects)
Questions?
Links
Taxonline DevOps Environment
By Bill WANG
Taxonline DevOps Environment
- 335