1 / 33

Scalable Systems Using Micro- RESTful Services

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.

anoush
Download Presentation

Scalable Systems Using Micro- RESTful Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Scalable Systems Using Micro-RESTful Services silicon valley code camp October 6th, 2013 by Ted M. Young http://about.me/tedmyoung Twitter: @jitterted

  2. What to expect this session • The Problem • An Architectural Solution • Our Proof of Concept

  3. The Problems

  4. Monolithic

  5. Layered Architecture Biz Logic Biz Logic Biz Logic

  6. Tight-Coupling

  7. Complexity

  8. Many Responsibilities

  9. Scalability Limitations

  10. RPC-Based APIs are Brittle

  11. TheArchitecture CubeandMicro-Services Services per feature integrated using rest

  12. ArchitecturalPrinciples From "The Art of Scalability" (Figure 12.3)

  13. From "The Art of Scalability" (Figure 23.1) Scalability Cube

  14. Layered Architecture(Traditional)

  15. Onion (Clean) Architecture

  16. System Architecture

  17. Service Architecture

  18. The Unix Philosophy Write programs that do one thingand do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface. • - Lions' Commentary on Unix

  19. Fits in your head

  20. Hypermedia (REST) • Resource-oriented • Flexible in face of change • User-facing clients leverage links • Async and Stateless services

  21. Proof of Concept Our summer experiment

  22. Tech Stack • Dropwizard services • AngularJS UI Client • Jenkins + Maven (Nexus) deployment • Custom Dashboard

  23. Dropwizard • Jettyfor 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, JodaDate/Time

  24. REST: Media Types • More structure than POAJ • Plain Old application/json • Leverage libraries

  25. Media Types for APIs • In/Out: application/collection+json • In: application/x-www-form-urlencoded

  26. collection+json (aka Cj)

  27. Continuous Deployment • Current: • Jenkins • Nexus repository (Maven package) • Shell script • Tried: • Upstart script & Puppet • Ansible • Bamboo 5

  28. CD Goal

  29. Monitoring

  30. Future Monitoring/Mgmt

  31. Still In Progress • API Facades • Better Deployment/Management

  32. Final Questions?

  33. 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

More Related