Skip to content

Instantly share code, notes, and snippets.

@olebedev
Created June 12, 2016 12:06
Show Gist options
  • Save olebedev/dff1d3c1167081af61c016eae62e10bc to your computer and use it in GitHub Desktop.
Save olebedev/dff1d3c1167081af61c016eae62e10bc to your computer and use it in GitHub Desktop.
Note on tools for building micro-services based architecture: CI, CD, Cluster Management, etc

Tools for building microservices architecture (May 7, 2016)

We are obviously in the age of Microservices, Mobile first, Polyglot, post-Java JVM languages, GitHub and Docker uprise. In this world, Open Source usage dominates, and the speed of change is intense. Knowing the direction of DevOps tools and picking the right one for the project is crucial.

Terms

Continuous Integration is the practice of running your tests on a non-developer machine automatically everytime someone pushes new code into the source repository.

This has the tremendous advantage of always knowing if all tests work and getting fast feedback. The fast feedback is important so you always know right after you broke the build (introduced changes that made either the compile/build cycle or the tests fail) what you did that failed and how to revert it.

If you only run your tests occasionally the problem is that a lot of code changes may have happened since the last time and it is rather hard to figure out which change introduced the problem. When it is run automatically on every push then it is always pretty obvious what and who introduced the problem.

Built on top of Continuous Integration are Continuous Deployment/Delivery where after a successful test run your instantly and automatically release the latest version of your codebase. Makes deployment a non-issue and helps you speed up your development.

Cluster Management Tools abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.

Building MVP

If you are planning to build your first MVP, start simple consider Dokku!

Dokku - a docker-powered PaaS that helps you build and manage the lifecycle of applications. Dokku can be installed on any hardware and be used on inexpensive hosting providers.

Dokku relies on Nginx, the world’s most popular FREE open source web server and load balancer for high-traffic sites, powering over 140 million properties

Along with Redis which is an open source, in-memory data structure store, used as database, cache and message broker, bare-metal server with 16Gb RAM and SSD drive can sustain quite a lot of traffic of work-load.

Recommended hosting providers

Getting BIG

Once your MVP is up and running, it's time to think how to scale BIG!

Below is the collection of links on the most used or fast-growing DevOps tools and communities.

Continuous Integration & Continuous Deployment/Delivery Tools

Cluster Management Tools

OS

  • CoreOS, https://coreos.com/
  • RancherOS, http://rancher.com/rancher-os/, In RancherOS, the Docker daemon runs as first process the kernel starts when it boots. We call this instance of Docker "System Docker," as it is responsible for initiating system services, such as udev, DHCP and the console. Each of these system services run as containers. System Docker takes the place of the init system, such as sysvinit or systemd, in other Linux distributions.

Data Replication, Clustering

Node.js tools

Good reading

12-Factor

12-Factor Apps in Plain English, http://www.clearlytech.com/2014/01/04/12-factor-apps-plain-english/

REST API design

Note on REST API design and documentation tools, https://gist.github.com/reactima/a77acd430478c0f3cda17113d216a526

Best tools?

Not sure which tools is the Best? Go talk to people who used your best pick in production.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment