Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Moving to a Service Oriented Architecture from ...

Xavier Briand
November 09, 2013

Moving to a Service Oriented Architecture from tightly coupled applications (TrueNorthPHP 2013)

Lessons from a year of rearchitecting tightly coupled 4-year-old applications to a SOA while keeping developers happy (for the most part).

For a year, ExperiencePoint's development team has been rebuilding its aging applications to a modern and highly available architecture.

We have been able to spend more time on developing our new products while reducing our technological debt by building on top of standard technologies, separating concerns and automating our working environment.

This talk will show the benefits of splitting omniscient applications to smaller independent modules and explain why your web applications should use HTTP RESTful API to communicate with each other. We'll also explore a few strategies to deal with aging PHP applications or deprecated technologies.

Trendy keywords: SOA, OAuth2, Symfony2, HTTP RESTful API, HATEOAS (yeah baby)

Xavier Briand

November 09, 2013
Tweet

Other Decks in Technology

Transcript

  1. Step 1 Reset ð Goal: efficient dev environment VM Modern

    SCM Modern Frameworks Tasks automation
  2. { " n a m e " : " e

    p / e c " , " l i c e n s e " : " p r o p r i e t a r y " , " a u t o l o a d " : { " p s r - 0 " : { " " : " s r c / " } } , " r e q u i r e " : { " p h p " : " > = 5 . 3 . 3 " , " s y m f o n y / s y m f o n y " : " ~ 2 . 4 " , " d o c t r i n e / o r m " : " ~ 2 . 2 , > = 2 . 2 . 3 " , " e p / b a c k e n d - s d k - b u n d l e " : " d e v - m a s t e r " , " e p / o l d - s t u f f " : " d e v - t r u n k " } , " r e q u i r e - d e v " : { " p h p u n i t / p h p u n i t " : " 3 . 7 . * " } }
  3. $ p h p c o m p o s

    e r . p h a r _ _ _ _ _ _ / _ _ _ _ / _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ / / / _ _ \ / _ _ ` _ _ \ / _ _ \ / _ _ \ / _ _ _ / _ \ / _ _ _ / / / _ _ _ / / _ / / / / / / / / _ / / / _ / ( _ _ ) _ _ / / \ _ _ _ _ / \ _ _ _ _ / _ / / _ / / _ / . _ _ _ / \ _ _ _ _ / _ _ _ _ / \ _ _ _ / _ / / _ / A v a i l a b l e c o m m a n d s : i n s t a l l I n s t a l l s t h e p r o j e c t d e p e n d e n c i e s f r o m t h e c o m p o s e r . l o c k f i l e i f p r e s e r e q u i r e A d d s r e q u i r e d p a c k a g e s t o y o u r c o m p o s e r . j s o n a n d i n s t a l l s t h e m s e a r c h S e a r c h f o r p a c k a g e s s e l f - u p d a t e U p d a t e s c o m p o s e r . p h a r t o t h e l a t e s t v e r s i o n . s t a t u s S h o w a l i s t o f l o c a l l y m o d i f i e d p a c k a g e s u p d a t e U p d a t e s y o u r d e p e n d e n c i e s t o t h e l a t e s t v e r s i o n a c c o r d i n g t o c o m p o s e r . v a l i d a t e V a l i d a t e s a c o m p o s e r . j s o n
  4. Problem App config management c o m p o s

    e r ( P l a t f o r m p a c k a g e s ) i n c e n t e e v / c o m p o s e r - p a r a m e t e r - h a n d l e r $ m a k e b u i l d
  5. Problem QA + jenkins-php.org $ m a k e p

    r e p a r e a n a l y s i s
  6. Step 2 “Defeat in detail” Divide and gather (DRY) Keep

    things small + KISS Design by contract Leverage your architecture
  7. Inside Remove Flash... No! Ok but: Let’s use the best

    technology to do the job AMF => plain HTTP via browser Business Logic => Backend Frontend UI => Flash
  8. Hypermedia API > P O S T / g a

    m e s / + c o n t e n t < 2 0 1 C r e a t e d < L o c a t i o n / g a m e s / 1 > G E T / g a m e s / 1 < 2 0 0 O k < < < g a m e > < < ! - - . . . - - > < < l i n k s r e l = ” a c t i o n X ” s r c = ” . . . ” > < / l i n k s > < < l i n k s r e l = ” a c t i o n Y ” s r c = ” . . . ” > < / l i n k s > < < / g a m e > David Zuelke "Designing HTTP Interfaces and RESTful Web Services"