Continuous Delivery with Golang and Docker

How Sony Japan continuously deploys microservices built with Go and Docker in minutes

Why CircleCI?

Shipping high-quality software has been key to Sony's success for decades. Now more than ever, with the ubiquity of Wi-Fi and mobile internet in a dizzying array of devices, and with dozens of cloud services to manage, it's vital that Sony developers can build, test, and deploy business-critical applications quickly and reliably.

There are a number of different teams within Sony that depend on CircleCI for CI and CD, but this will be a deep-dive on one project developed at Sony Japan that provides shared services such as authentication and user management for a variety of web applications, such as PlayMemories, the cross-platform, cloud-based photo sharing service. The project is called Next Generation Core, or NG-Core for short, and it is made up of Docker-based microservices written in Go.

Tomoaki Kobayakawa
Deputy General Manager at Sony
“Our old deployment process involved a spreadsheet of instructions and people to run them and took days. The new process has been fully automated from the start with CircleCI and Docker and takes only ~20 minutes.”

The Challenge Prior to CircleCI

While the new NG-Core team, led by Yoshiyuki Mineo, started the project from scratch using some very modern tools, older projects in the organization had used a very different software development process. They were million-line Java monoliths that could take up to 4 days to deploy to production app servers based on instructions written in a spreadsheet and handed off to an operations team.

The Solution

The NG-Core services are written in Go, packaged into Docker containers, pushed to Docker Hub, then deployed to AWS Elastic Beanstalk. In detail, the process looks like this:

  1. The developer commits and pushes to GitHub
  2. CircleCI receives a hook from GitHub, triggering a build
  3. CircleCI pulls down the latest code, compiles the Go binaries, and creates a deployable image with docker build
  4. Unit and integration tests are run, including some tests that use the final Docker image
  5. The Docker image is pushed to Docker Hub, and a new deployment is triggered on Elastic Beanstalk
  6. A final live system test is run after the deployment
The entire build and test processes each take about 5 minutes, and when deployments are triggered they take about an additional 10 minutes. The NG-Core team started development using this process in May of 2014 and has been in production since January 2015, and they are extremely happy with the setup.

About Sony

Applications deployed "the old way" went through a slow, manual process that involved lots of precarious, in-place manipulation of production resources, taking days to go from a developer to production. Now, with CircleCI and Docker, deployment of the NG-Core services is fully automated, takes an immutable infrastructure approach, and can take a git push into production in about 20 minutes. This means more frequent deployments and greater velocity for the team.

Thank you for submitting your info

You should receive an automated response notifying you that we received your info. Someone from our Enterprise team will be reaching out to you shortly.

CircleCI Success Logo