SlideShare a Scribd company logo
Old Programmers Can Learn New Tricks:
But they whine a lot and sometimes leave a mess on the
floor.
Donald F. Ferguson
CTO and Co-Founder, SPARQtv
donald.ferguson@sparq.tv
Old Programmers Can Learn New Tricks
http://serverlessconf.io/
Damian Bringas
Martin Baspineiro
Morgan Caitlin
Sebastian Taranto
Yiannis Stanvrou
2 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
Contents
•  Introduction
–  Overview of solution we are building.
–  Overview of current technology choices.
•  (Very) High-Level Architecture
–  Overview.
–  “Old dogs” think in terms of components and composition.
–  Our “component model.”
•  After Action Review from building the Alpha
–  What worked.
–  What did not work.
–  What we should do differently.
–  What we would like to have.
•  Discussion, Q&A
3 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
My Role
at this
Conference
4 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
My Role
at this
Conference
5 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
Solution Overview
•  End-Users
–  Interact with integrated “streams” and
“moments”
–  Chat and participate in communities.
•  Content Developers
–  Produce content.
–  Integrate and link with “cloud”
content.
–  Interact/collaborate with consumers.
•  3rd Parties
–  User APIs to gain data insight.
–  Advertise and interact.
•  Content Deliverers
–  Reuse the platform.
–  Using various models, e.g. SaaS,
APIs.
Connector/Integration with
•  Digital asset/content
management.
•  Internal, private collaboration.
•  Public social media.
•  … …
6 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
Technology
•  Used in alpha
•  Solution deployment.
•  Collaborative development.
•  Debug/management.
•  High priority for beta.
•  Some other technology
•  AngularJS, RESTAngular.
•  Java
•  XMPP
•  Cloud digital asset mgmt,
t
r
a
n
s
c
Slack
SQS
Asynch
Ops.
7 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
User Info
Content Management
Social Media
… …
… …
High-Level Application Architecture Overview
Integration
Composition
Services
“Browser”
8 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
How “Old Dogs Think”
9 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
Customer Content … …
Document/
Command
Standard
REST Msg
10 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
Interface Model/Implementation Model
•  There is one Lambda function implementation, that may have multiple instances.
–  “Run Command=‘XXX’ with ‘O1’ on ‘YYY’
–  Sub-dispatches (via table) on com.sparq.YYY.service.
–  And we surface as POST http://sparq.tv/app/commandProcessor, which means
you “POST” to do a “GET” by setting Command = “GET.”
•  We also surface “more natural” REST interface
–  Standard verbs (GET, POST, DELETE, UPDATE)
–  Just resource JSON body in/out.
–  Single, very complex integration mapping converts between
–  Body, path params, headers, query params, …
–  And CMD/document interface into “generic service” service.
•  We did this for four core reasons.
1.  Unit testing via Eclipse SDK and Lambda test UI, without going through GW and mappings.
2.  Support the option of other “bindings,” e.g. SQS, XMPP.
3.  Single gateway mapping/config for all resources/verbs.
4.  Rapidly enable cheating for “verbs” that spanned resources and do not look like CRUD.
11 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
Did the Old Guy Learn the Principles?
•  Compute service/code-on-demand: Yes.
•  Single Purpose, Stateless Functions Yes.
–  But in a WTF? way.
–  Distinction between packaging the function and function invocation/execution.
–  Flourish might cause us to think differently.
–  An approach to code reuse similar to ExpressJS app.use(), req/rsp, etc, but multi-protocol.
•  Event-based/push-based Epic Fail
–  Will get there, but less critical at early stage of web app.
–  The students in my course “Micro-Services Apps and APIs” had TREMENDOUS difficulty
grasping and applying concept not matter how many times I covered. (Not sure what to conclude)
•  Thick client, no middleware Sort Of
–  “Middle is an app design best practice, not a topology statement.”|
Thick clients have a “middle-tier” model/integration layer/tier.
–  Solutions that deliver value via APIs may not have a client, but derive value from composing and
integrating cloud APIs.
•  User 3rd Party Services. Yes.
12 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
After Action Review
What worked and was totally awesome
–  No team, effort, etc. to set up and configure app servers, classpaths, right version of XXX,
…
This saves significant cost and time.
–  Very, very incremental deployment and versioning of code.
–  I want to change POST on /customers/{id}/sociallogins
–  But not change ANY other path’s or verb’s implementation, including …/sociallogin/{id}
–  One and only one configuration of code per path/verb. The config MAY be the same, but is
not necessarily the same.
–  Incremental testing
–  Wrap with local Java main() and local resources. [app testing]
–  Test locally but call remote AWS resources. [distributed testing]
–  Test with the Eclipse “upload and run” Lambda function. [Lambda RT testing]
–  Test with console unit test for Lambda. [Paranoid testing]
–  Test through API Gateway with CommandProcessor. [GW independent of
config]
–  Test via normal REST/path [Test integration maps]
13 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
After Action Review
What did not work/we screwed up.
–  Web application design
–  There are two ways to build an app: datamodel à code à API or API à code à datamodel
–  We started with the datamodel.
–  This caused us no end of grief. We had type-space and format mappings and errors at every stage.
–  Java
–  We chose for various reasons
–  COBOL is not supported.
–  New product built by a team that previously build Java/J2EE solutions à leverage some code and skills.
–  Server side JavaScript freaks old-guys out.
–  Very little documentation, best practices, sample applications, … compared to other languages.
–  All kids of weird stuff happened, e.g.
–  The occasionally non-stateless JVM.
–  Gradually, reverse engineered EXACTLY what came into our code from the gateway.
–  Configuration/property management.
–  Where do you put/how do you handle config and property files.
–  We tried several approaches for various reasons.
–  Software configuration management
–  There is no concept of “all these pieces make up an application.”
–  Stuff in S3, Lambda functions, SQL scripts, integration mappings, …
14 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
After Action Review
•  What would we do differently.
–  Start with API and Swagger, and “Generate” everything from there, e.g.
–  Transfer Objects
–  SQL
–  RESTAngular
–  Swagger helps enormously with using the API gateway, but we still do a lot of cut and paste
for mapping templates and “x-amazon-apigateway-integration.”
–  Designed our object model differently
–  We have standard POJOs.
–  We should use typed interfaces mapped to internal JSON objects with data.
–  Thought more carefully about “query” upfront.
–  …?x=123&y=“abc” works pretty well for basic resources.
–  But gets unwieldy when the resource is a composite.
–  We ended up writing a “query processor” and commands that are like “stored procedures.”
15 Old Programmers Can Learn New Tricks
http://serverlessconf.io/ (2016)
After Action Review
What we would like.
–  Near term/incremental
–  API Gateway improvements, including tools.
–  More incremental consumption of AWS capabilities.
–  API Gateway + Lambda + Policy + IAM + … is extremely powerful.
–  But projects start wanting 10% of this and 5% of that and 20% of this …
–  Examples, examples, .. Patterns/anti-patterns.
–  All h*ll broke loose with WebSphere 3.0.
–  Programmers made all kinds of naïve errors.
–  We produced a presentation with 30 patterns/anti-patterns and our “customer crit-sits”
dropped by 90%.
–  We made all kinds of AWS mistakes because of lack of samples and patterns.
–  More strategically
–  Graph database.
–  Chat, control message, presence, … service.
–  “Function composition abstractions/DSLs”

More Related Content

What's hot

Charity Hound - Serverless, NoOps, The Tooth Fairy
Charity Hound - Serverless, NoOps, The Tooth FairyCharity Hound - Serverless, NoOps, The Tooth Fairy
Charity Hound - Serverless, NoOps, The Tooth Fairy
ServerlessConf
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
Tony Tam
 
Azure functions
Azure functionsAzure functions
Azure functions
vivek p s
 
Five Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your CodeFive Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your Code
3scale
 
Fastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + SwaggerFastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + Swagger
Tony Tam
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless SummitBuild a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
CodeOps Technologies LLP
 
User-percieved performance
User-percieved performanceUser-percieved performance
User-percieved performance
Mike North
 
AngularJS Anatomy & Directives
AngularJS Anatomy & DirectivesAngularJS Anatomy & Directives
AngularJS Anatomy & Directives
Digikrit
 
Serverless Summit - Quiz
Serverless Summit - QuizServerless Summit - Quiz
Serverless Summit - Quiz
CodeOps Technologies LLP
 
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless SummitServerless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
CodeOps Technologies LLP
 
Serverless with Azure Functions
Serverless with Azure FunctionsServerless with Azure Functions
Serverless with Azure Functions
Andreas Willich
 
Writing less code with Serverless on AWS at OOP 2022
Writing less code with Serverless on AWS at OOP 2022Writing less code with Serverless on AWS at OOP 2022
Writing less code with Serverless on AWS at OOP 2022
Vadym Kazulkin
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Vadym Kazulkin
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
Amazon Web Services
 
R2DBC - Good Enough for Production?
R2DBC - Good Enough for Production?R2DBC - Good Enough for Production?
R2DBC - Good Enough for Production?
Olexandra Dmytrenko
 
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
Vadym Kazulkin
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
Andrzej Krzywda
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applications
Florian Dutey
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
Casey Lee
 
Signal r azurepresentation
Signal r azurepresentationSignal r azurepresentation
Signal r azurepresentationJustin Wendlandt
 

What's hot (20)

Charity Hound - Serverless, NoOps, The Tooth Fairy
Charity Hound - Serverless, NoOps, The Tooth FairyCharity Hound - Serverless, NoOps, The Tooth Fairy
Charity Hound - Serverless, NoOps, The Tooth Fairy
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Five Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your CodeFive Ways to Scale your API Without Touching Your Code
Five Ways to Scale your API Without Touching Your Code
 
Fastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + SwaggerFastest to Mobile with Scalatra + Swagger
Fastest to Mobile with Scalatra + Swagger
 
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless SummitBuild a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
Build a Chatbot in Ten Minutes - Dave Kerr - Serverless Summit
 
User-percieved performance
User-percieved performanceUser-percieved performance
User-percieved performance
 
AngularJS Anatomy & Directives
AngularJS Anatomy & DirectivesAngularJS Anatomy & Directives
AngularJS Anatomy & Directives
 
Serverless Summit - Quiz
Serverless Summit - QuizServerless Summit - Quiz
Serverless Summit - Quiz
 
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless SummitServerless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
 
Serverless with Azure Functions
Serverless with Azure FunctionsServerless with Azure Functions
Serverless with Azure Functions
 
Writing less code with Serverless on AWS at OOP 2022
Writing less code with Serverless on AWS at OOP 2022Writing less code with Serverless on AWS at OOP 2022
Writing less code with Serverless on AWS at OOP 2022
 
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
 
R2DBC - Good Enough for Production?
R2DBC - Good Enough for Production?R2DBC - Good Enough for Production?
R2DBC - Good Enough for Production?
 
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
FaaS or not to FaaS. Visible and invisible benefits of the Serverless paradig...
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applications
 
Serverless Delivery
Serverless DeliveryServerless Delivery
Serverless Delivery
 
Signal r azurepresentation
Signal r azurepresentationSignal r azurepresentation
Signal r azurepresentation
 

Viewers also liked

Eric Windisch - Building Composable Serverless Apps
Eric Windisch - Building Composable Serverless AppsEric Windisch - Building Composable Serverless Apps
Eric Windisch - Building Composable Serverless Apps
ServerlessConf
 
Lars Trierloff - Serverless Adventures with AWS Lambda and Clojure
Lars Trierloff - Serverless Adventures with AWS Lambda and ClojureLars Trierloff - Serverless Adventures with AWS Lambda and Clojure
Lars Trierloff - Serverless Adventures with AWS Lambda and Clojure
ServerlessConf
 
Paul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last YearPaul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last Year
ServerlessConf
 
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
ServerlessConf
 
Noelle La Charite - Building Voice Experiences
Noelle La Charite - Building Voice ExperiencesNoelle La Charite - Building Voice Experiences
Noelle La Charite - Building Voice Experiences
ServerlessConf
 
Joe Emison - 10X Product Development
Joe Emison - 10X Product DevelopmentJoe Emison - 10X Product Development
Joe Emison - 10X Product Development
ServerlessConf
 
Kapil Thangavelu - Cloud Custodian
Kapil Thangavelu - Cloud CustodianKapil Thangavelu - Cloud Custodian
Kapil Thangavelu - Cloud Custodian
ServerlessConf
 

Viewers also liked (7)

Eric Windisch - Building Composable Serverless Apps
Eric Windisch - Building Composable Serverless AppsEric Windisch - Building Composable Serverless Apps
Eric Windisch - Building Composable Serverless Apps
 
Lars Trierloff - Serverless Adventures with AWS Lambda and Clojure
Lars Trierloff - Serverless Adventures with AWS Lambda and ClojureLars Trierloff - Serverless Adventures with AWS Lambda and Clojure
Lars Trierloff - Serverless Adventures with AWS Lambda and Clojure
 
Paul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last YearPaul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last Year
 
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
 
Noelle La Charite - Building Voice Experiences
Noelle La Charite - Building Voice ExperiencesNoelle La Charite - Building Voice Experiences
Noelle La Charite - Building Voice Experiences
 
Joe Emison - 10X Product Development
Joe Emison - 10X Product DevelopmentJoe Emison - 10X Product Development
Joe Emison - 10X Product Development
 
Kapil Thangavelu - Cloud Custodian
Kapil Thangavelu - Cloud CustodianKapil Thangavelu - Cloud Custodian
Kapil Thangavelu - Cloud Custodian
 

Similar to Donald Ferguson - Old Programmers Can Learn New Tricks

Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
Practices and tools for building better APIs
Practices and tools for building better APIsPractices and tools for building better APIs
Practices and tools for building better APIsNLJUG
 
Practices and tools for building better API (JFall 2013)
Practices and tools for building better API (JFall 2013)Practices and tools for building better API (JFall 2013)
Practices and tools for building better API (JFall 2013)
Peter Hendriks
 
The PRPL Pattern
The PRPL PatternThe PRPL Pattern
The PRPL Pattern
Red Pill Now
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
Gary Pedretti
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
Michael Choi
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
PROIDEA
 
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
Paul Jensen
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
 
Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016
Aad Versteden
 
The future of paas is serverless
The future of paas is serverlessThe future of paas is serverless
The future of paas is serverless
Yan Cui
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
Yan Cui
 
Cytoscape: Now and Future
Cytoscape: Now and FutureCytoscape: Now and Future
Cytoscape: Now and Future
Keiichiro Ono
 
Proper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino DevelopersProper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino Developers
Mark Myers
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
Robert Postill
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...
Katia Aresti
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
Geekstone
 
Surrogate dependencies (in node js) v1.0
Surrogate dependencies  (in node js)  v1.0Surrogate dependencies  (in node js)  v1.0
Surrogate dependencies (in node js) v1.0
Dinis Cruz
 
Dictionary Within the Cloud
Dictionary Within the CloudDictionary Within the Cloud
Dictionary Within the Cloud
gueste4978b94
 
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with PrometheusMonitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Fabian Reinartz
 

Similar to Donald Ferguson - Old Programmers Can Learn New Tricks (20)

Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
Practices and tools for building better APIs
Practices and tools for building better APIsPractices and tools for building better APIs
Practices and tools for building better APIs
 
Practices and tools for building better API (JFall 2013)
Practices and tools for building better API (JFall 2013)Practices and tools for building better API (JFall 2013)
Practices and tools for building better API (JFall 2013)
 
The PRPL Pattern
The PRPL PatternThe PRPL Pattern
The PRPL Pattern
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
[4developers2016] The ultimate mobile DX using JS as a primary language (Fato...
 
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
End to end testing Single Page Apps & APIs with Cucumber.js and Puppeteer (Em...
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016Semantic technologies in practice - KULeuven 2016
Semantic technologies in practice - KULeuven 2016
 
The future of paas is serverless
The future of paas is serverlessThe future of paas is serverless
The future of paas is serverless
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
 
Cytoscape: Now and Future
Cytoscape: Now and FutureCytoscape: Now and Future
Cytoscape: Now and Future
 
Proper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino DevelopersProper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino Developers
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
Surrogate dependencies (in node js) v1.0
Surrogate dependencies  (in node js)  v1.0Surrogate dependencies  (in node js)  v1.0
Surrogate dependencies (in node js) v1.0
 
Dictionary Within the Cloud
Dictionary Within the CloudDictionary Within the Cloud
Dictionary Within the Cloud
 
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with PrometheusMonitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with Prometheus
 

Recently uploaded

Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Sanjeev Rampal
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
JeyaPerumal1
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
VivekSinghShekhawat2
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
natyesu
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 

Recently uploaded (20)

Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...1.Wireless Communication System_Wireless communication is a broad term that i...
1.Wireless Communication System_Wireless communication is a broad term that i...
 
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptxInternet-Security-Safeguarding-Your-Digital-World (1).pptx
Internet-Security-Safeguarding-Your-Digital-World (1).pptx
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
BASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptxBASIC C++ lecture NOTE C++ lecture 3.pptx
BASIC C++ lecture NOTE C++ lecture 3.pptx
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 

Donald Ferguson - Old Programmers Can Learn New Tricks

  • 1. Old Programmers Can Learn New Tricks: But they whine a lot and sometimes leave a mess on the floor. Donald F. Ferguson CTO and Co-Founder, SPARQtv donald.ferguson@sparq.tv Old Programmers Can Learn New Tricks http://serverlessconf.io/ Damian Bringas Martin Baspineiro Morgan Caitlin Sebastian Taranto Yiannis Stanvrou
  • 2. 2 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) Contents •  Introduction –  Overview of solution we are building. –  Overview of current technology choices. •  (Very) High-Level Architecture –  Overview. –  “Old dogs” think in terms of components and composition. –  Our “component model.” •  After Action Review from building the Alpha –  What worked. –  What did not work. –  What we should do differently. –  What we would like to have. •  Discussion, Q&A
  • 3. 3 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) My Role at this Conference
  • 4. 4 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) My Role at this Conference
  • 5. 5 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) Solution Overview •  End-Users –  Interact with integrated “streams” and “moments” –  Chat and participate in communities. •  Content Developers –  Produce content. –  Integrate and link with “cloud” content. –  Interact/collaborate with consumers. •  3rd Parties –  User APIs to gain data insight. –  Advertise and interact. •  Content Deliverers –  Reuse the platform. –  Using various models, e.g. SaaS, APIs. Connector/Integration with •  Digital asset/content management. •  Internal, private collaboration. •  Public social media. •  … …
  • 6. 6 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) Technology •  Used in alpha •  Solution deployment. •  Collaborative development. •  Debug/management. •  High priority for beta. •  Some other technology •  AngularJS, RESTAngular. •  Java •  XMPP •  Cloud digital asset mgmt, t r a n s c Slack SQS Asynch Ops.
  • 7. 7 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) User Info Content Management Social Media … … … … High-Level Application Architecture Overview Integration Composition Services “Browser”
  • 8. 8 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) How “Old Dogs Think”
  • 9. 9 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) Customer Content … … Document/ Command Standard REST Msg
  • 10. 10 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) Interface Model/Implementation Model •  There is one Lambda function implementation, that may have multiple instances. –  “Run Command=‘XXX’ with ‘O1’ on ‘YYY’ –  Sub-dispatches (via table) on com.sparq.YYY.service. –  And we surface as POST http://sparq.tv/app/commandProcessor, which means you “POST” to do a “GET” by setting Command = “GET.” •  We also surface “more natural” REST interface –  Standard verbs (GET, POST, DELETE, UPDATE) –  Just resource JSON body in/out. –  Single, very complex integration mapping converts between –  Body, path params, headers, query params, … –  And CMD/document interface into “generic service” service. •  We did this for four core reasons. 1.  Unit testing via Eclipse SDK and Lambda test UI, without going through GW and mappings. 2.  Support the option of other “bindings,” e.g. SQS, XMPP. 3.  Single gateway mapping/config for all resources/verbs. 4.  Rapidly enable cheating for “verbs” that spanned resources and do not look like CRUD.
  • 11. 11 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) Did the Old Guy Learn the Principles? •  Compute service/code-on-demand: Yes. •  Single Purpose, Stateless Functions Yes. –  But in a WTF? way. –  Distinction between packaging the function and function invocation/execution. –  Flourish might cause us to think differently. –  An approach to code reuse similar to ExpressJS app.use(), req/rsp, etc, but multi-protocol. •  Event-based/push-based Epic Fail –  Will get there, but less critical at early stage of web app. –  The students in my course “Micro-Services Apps and APIs” had TREMENDOUS difficulty grasping and applying concept not matter how many times I covered. (Not sure what to conclude) •  Thick client, no middleware Sort Of –  “Middle is an app design best practice, not a topology statement.”| Thick clients have a “middle-tier” model/integration layer/tier. –  Solutions that deliver value via APIs may not have a client, but derive value from composing and integrating cloud APIs. •  User 3rd Party Services. Yes.
  • 12. 12 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) After Action Review What worked and was totally awesome –  No team, effort, etc. to set up and configure app servers, classpaths, right version of XXX, … This saves significant cost and time. –  Very, very incremental deployment and versioning of code. –  I want to change POST on /customers/{id}/sociallogins –  But not change ANY other path’s or verb’s implementation, including …/sociallogin/{id} –  One and only one configuration of code per path/verb. The config MAY be the same, but is not necessarily the same. –  Incremental testing –  Wrap with local Java main() and local resources. [app testing] –  Test locally but call remote AWS resources. [distributed testing] –  Test with the Eclipse “upload and run” Lambda function. [Lambda RT testing] –  Test with console unit test for Lambda. [Paranoid testing] –  Test through API Gateway with CommandProcessor. [GW independent of config] –  Test via normal REST/path [Test integration maps]
  • 13. 13 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) After Action Review What did not work/we screwed up. –  Web application design –  There are two ways to build an app: datamodel à code à API or API à code à datamodel –  We started with the datamodel. –  This caused us no end of grief. We had type-space and format mappings and errors at every stage. –  Java –  We chose for various reasons –  COBOL is not supported. –  New product built by a team that previously build Java/J2EE solutions à leverage some code and skills. –  Server side JavaScript freaks old-guys out. –  Very little documentation, best practices, sample applications, … compared to other languages. –  All kids of weird stuff happened, e.g. –  The occasionally non-stateless JVM. –  Gradually, reverse engineered EXACTLY what came into our code from the gateway. –  Configuration/property management. –  Where do you put/how do you handle config and property files. –  We tried several approaches for various reasons. –  Software configuration management –  There is no concept of “all these pieces make up an application.” –  Stuff in S3, Lambda functions, SQL scripts, integration mappings, …
  • 14. 14 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) After Action Review •  What would we do differently. –  Start with API and Swagger, and “Generate” everything from there, e.g. –  Transfer Objects –  SQL –  RESTAngular –  Swagger helps enormously with using the API gateway, but we still do a lot of cut and paste for mapping templates and “x-amazon-apigateway-integration.” –  Designed our object model differently –  We have standard POJOs. –  We should use typed interfaces mapped to internal JSON objects with data. –  Thought more carefully about “query” upfront. –  …?x=123&y=“abc” works pretty well for basic resources. –  But gets unwieldy when the resource is a composite. –  We ended up writing a “query processor” and commands that are like “stored procedures.”
  • 15. 15 Old Programmers Can Learn New Tricks http://serverlessconf.io/ (2016) After Action Review What we would like. –  Near term/incremental –  API Gateway improvements, including tools. –  More incremental consumption of AWS capabilities. –  API Gateway + Lambda + Policy + IAM + … is extremely powerful. –  But projects start wanting 10% of this and 5% of that and 20% of this … –  Examples, examples, .. Patterns/anti-patterns. –  All h*ll broke loose with WebSphere 3.0. –  Programmers made all kinds of naïve errors. –  We produced a presentation with 30 patterns/anti-patterns and our “customer crit-sits” dropped by 90%. –  We made all kinds of AWS mistakes because of lack of samples and patterns. –  More strategically –  Graph database. –  Chat, control message, presence, … service. –  “Function composition abstractions/DSLs”