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