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!
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
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.
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.
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
Please feel free to contact me!