Lead Consultant @ Exortech Consulting
Product Owner / Solutions Architect @ EnerNOC
Site Reliability Engineer @ EnerNOC
characterized by massiveness, total uniformity, rigidity, invulnerability, etc.
function askHAL(action) {
if (isStatusCheck(action) {
return "Affirmative, Dave.";
} else if (isTimeToLeave(action)) {
return "It is dangerous to remain here.";
}
return "I'm sorry, Dave. I'm afraid I can't do that.";
}
http://michaelfeathers.typepad.com/michael_feathers_blog/2009/06/canalizing-design.html
Using tests to enforce package structure and drive decoupling effort
Choose language / framework that make asynchronous communication easy
Align service boundaries to bounded contexts / value streams
Share nothing architecture
Mono-repo vs repo-per-service
Default to HTTP RESTful endpoints
Safety through isolation / compartmentalization
Separate build and deploy targets per service
Continuous deployment (where feasible)
Zero-downtime deployment
Common cookbook for service creation
Single-command provisioning
Version production cookbooks
Containerization of runtime environments
Keep it simple - shared secrets
Encapsulate session storage
Private load balancers for back-end services
Standard health-check per service: /_hc
owen@exortech.com | @exortech
nicwaller@gmail.com | @nic_waller