Micro-services Componentized - Microservices should be very small with a single responsibility and be out of process. This is very different from a typical library where components are assembled in process. Message Driven - Microservices should be driven by asynchronous messaging where the intelligence is left up to the microservice implementation and not provided by the messaging fabric Decentralized Data - Each service should manage its own data. You can think of this model as the OO concept of data encapsulation. No service can access the database of another service. software that fits in your head. Dan North, @tastapod Google App Engine Focus on your code! Java Python Go PHP Managed VM Instances are health-checked, healed as necessary, and co-located with other module instances within the project Critical, backwards compatible updates are automatically rolled out to the underlying operating system Why Go? There are very few core concepts (struct, type, interface, channel, function, slice). Everything else is represented in these concepts. Mostly all core libraries are written in Go. Go compiler is written in Go. Static compilation: Go binary compiled for platform can be run on this platform without any additional requirements. There is an possibility to «bundle» data into binary, so this binary could be supplied «as-is» (not archive that need to unpack). It provides styling guides out of the box. «go fmt» will re-format code so all code would be in same style. So any Go developer can easily read Go code. Also in contains «go vet» command that check program for common mistakes In case of new version of Go is released, and there is some breaking change, «go fix» fill analyze source code and fix it. All changes are or 100% back-compatable or could be fixed. Demo Google Cloud Platform is used and trusted by over 4 million applications Micro-services - solution for process, governance, cost of operation and scalability issues, not a technology. We're building the ability to fix a typo on a prominent page of your large system within minutes without touching the rest of the system. We are promising the ability to maneuver an oil tanker as if it was a canoe, in a world full of oil tankers. Valentyn Shybanov olostan@gmail.com http://olostan.name Kudos to Dan North @tastapod, Dejan Glozic @dglozic,Martin Fowler @martinfowler and other great people who contribute in understanding and implementing micro-services. Special thanks to Google for their great products. Micro-services in Google Cloud Platform My name is Valentyn Shybanov. You can find more information on http://olostan.name/ There are three simple principles of micro-services. First one - isolated logical-bound components. Second - asynchronous messaging between services. But no single "enterprise service bus", let service decide the best way to communicate. HTTP/1, HTTP/2, REST, WCF... And last one - each service should store its own data. No single Database - that means no DB bottleneck, no single decision about relational vs not-relational databases, But what is "micro"? Does that mean that each service should be 100 lines of code? 1000? How to understand is service "micro" or not? I like how Dan North defined this. As long as you can fully understand bounds of service, understand all dependencies, that mean that it is good candidate for micro-service. So let's take a look what Google Cloud Platform can suggest: First and the most easiest is Google App Engine With GAE you can focus on code. Everything else is handled by Google. You write code, Google do building, deployment, health monitoring, load balancing - everything except writing code of your app! If you have, for example, Java app, all you need is to add single file that describes endpoints There are couple of restrictions: like set of languages, that could be used, not full SDK, access to system etc But if it not enough, you can use Managed VM: In this case you can use additional features, like parallel execution and even other languages (like Dart), Still Google take care about lots of things like hearth checking OS is updated automatically giving reliable safe system So why Go is good for development of big cloud apps? Easy to write code Easy to run app Easy read/learn other's code Easy to maintain https://github.com/olostan/olo-grid Please feel free to contact me!