scalable systems using micro- restful services
DESCRIPTION
Scalable Systems Using Micro- RESTful Services. silicon valley code camp October 6 th , 2013. by Ted M. Young. http://about.me/tedmyoung Twitter: @ jitterted. What to expect this session. The Problem An Architectural Solution Our Proof of Concept. The Problems. Monolithic. - PowerPoint PPT PresentationTRANSCRIPT
Scalable Systems Using Micro-RESTful Services
SILICON VALLEY CODE CAMPOCTOBER 6TH, 2013
by Ted M. Younghttp://about.me/tedmyoungTwitter: @jitterted
What to expect this session The Problem
An Architectural Solution
Our Proof of Concept
The Problems
Monolithic
Layered Architecture
Platform
Business Logic
UI APIsBatch
Biz Logic Biz Logic
Biz Logic
Tight-Coupling
Complexity
Many Responsibilities
Scalability Limitations
RPC-Based APIs are Brittle
TheArchitecture CubeandMicro-ServicesSERVICES PER FEATURE INTEGRATED USING REST
From "The Art of Scalability" (Figure 12.3)
ArchitecturalPrinciples
Scalability CubeFrom "The Art of Scalability" (Figure 23.1)
Layered Architecture(Traditional)
Onion (Clean) Architecture
System Architecture
TaskManagement
Service
CommissionService
Billing andPaymentService
UserManagement
Service
AgentManagement
Service
Service Architecture
The Unix PhilosophyWrite programs that do one thing and do it
well. Write programs to work together.
Write programs that handle text streams,
because that is a universal interface.
- Lions' Commentary on Unix
Fits in your head
Hypermedia (REST) Resource-oriented
Flexible in face of change
User-facing clients leverage links
Async and Stateless services
Proof of ConceptOUR SUMMER EXPERIMENT
Tech Stack Dropwizard services
AngularJS UI Client
Jenkins + Maven (Nexus) deployment
Custom Dashboard
Dropwizard◦Jetty for HTTP◦Jersey for REST (and HttpClient)◦Jackson for JSON◦Metrics (includes Healthcheck) for monitoring
◦Logback/slf4j for logging◦Other useful libraries
◦ Guava, JDBI, Liquibase, Freemarker, Joda Date/Time
REST: Media Types More structure than POAJ
◦Plain Old application/json
Leverage libraries
Media Types for APIs In/Out: application/collection+json
In: application/x-www-form-urlencoded
collection+json (aka Cj)
Continuous Deployment
Current:◦ Jenkins
◦ Nexus repository (Maven package)◦ Shell script
Tried:◦ Upstart script & Puppet◦ Ansible◦ Bamboo 5
CD Goal
Monitoring
Future Monitoring/Mgmt
Still In Progress API Facades
Better Deployment/Management
Final Questions?
Notes (stuff I didn’t get to talk about)
Using a RESTful (or Hypermedia) architecture, we've created "micro"
services that talk to each other in order to provide scalability, along
with ease of development, deployment, and management.◦ Deployment and Management
◦ Purpose: scaling, updating◦ Tools: Ansible, Mesos with Marathon,
◦ Event information/Logging◦ Monitoring
◦ Custom dashboards ◦ REST or Hypermedia
◦ Example of a client that can change functionality over time