Tools for buiding 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.
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.
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, https://github.com/dokku/dokku
- Docker, https://www.docker.com/
- Heroku, https://www.heroku.com/
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
- Nginx, https://www.nginx.com/
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.
- Redis, http://redis.io/
Recommended hosting providers
- DigitalOcean, https://www.digitalocean.com/ for US and APAC audience
- Hetzner, https://www.hetzner.de/en for European
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
- Jenkins, https://jenkins.io/ probably the most popular CI tool
- CircleCI, http://circleci.com/ great CI tool with good support for Docker integration
- Travis CI, https://travis-ci.org/ expensive compared to other hosted testing services
Cluster Management Tools
- Swarm, https://docs.docker.com/swarm/overview/ from Docker team
- Fleet, https://coreos.com/using-coreos/clustering/ great for CoreOS fans
- Kubernetes, http://kubernetes.io/ powerful, developed by Google; runs on multiple platforms - Google Compute Engine, AWS, Azure, Openstack, VMWare and physical servers
- Mesos, http://mesos.apache.org/ for very big projects
Data Replication, Clustering
- PostgreSQL, http://www.postgresql.org/docs/current/interactive/high-availability.html
- MongoDB, https://docs.mongodb.com/manual/core/replication-introduction/
- PM2 - advanced Node.js process manager http://pm2.keymetrics.io/ https://github.com/Unitech/pm2
- Debugging Node.js in Chrome DevTools, https://mattdesl.svbtle.com/debugging-nodejs-in-chrome-devtools
- CPU Flame Graphs, http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#Node.js
- Swarm v. Fleet v. Kubernetes v. Mesos https://www.oreilly.com/ideas/swarm-v-fleet-v-kubernetes-v-mesos https://news.ycombinator.com/item?id=10438273
- Docker CPU share constraint, https://docs.docker.com/engine/reference/run/
- 1000 nodes and beyond: updates to Kubernetes performance and scalability in 1.2 link
- Why We Chose Kubernetes, http://code.haleby.se/2016/02/12/why-we-chose-kubernetes/
Not sure which tools is the Best? Go talk to people who used your best pick in production.
- Meet-up, http://www.meetup.com/