SlideShare a Scribd company logo
A Tale ofA Tale of
Contemporary SoftwareContemporary Software
UNSW Guest LectureUNSW Guest Lecture
March 2015
About MeAbout Me
Comp Science Bachelor UNSW
Applied Finance PostGrad at Macquarie Uni
IBM, Sun, Accenture, BGI/BlackRock, Macquarie Group
Now innovating and opinionating at Trunk Platform
yunspace yunzhilin yunspace.com
My opinions does not reflect the view of the company
Shout out if you have questions or need a break
ChallengesChallenges
Case StudiesCase Studies
SolutionSolution
Implement*Implement*
ChallengesChallenges
Market EfficiencyMarket Efficiency
We live in a market
Stock prices reflect and adjust to all public information
Little room for arbitrage or outrageous profit
Information Efficiency also applies to business & competition:
What you try to do, others are already doing/copying
Your customers are very likely to know more than you​​
You need to process information fast, but also relevant
Semi-Strong Efficiency
TechnologyTechnology
becomes Key Differentiatorbecomes Key Differentiator
Superior technology gives competitive advantage:
Exploiting Market Anomalies such as Momentum trading
Arbitraging tiny inefficiencies: Quantitive, Frequency trading.
Destroying information asymmetry and "experts": RPdata
Disrupting established markets: Uber, Tesla
Providing better UX for boring things: CBA, Simple.com
All we need is good software ...
Every CompanyEvery Company MUST beMUST be
Software CompanySoftware Company
The era of separating traditional industries and technology
industries is over—and those who fail to adapt right now will
soon find themselves obsolete.
- Forbes 2011Now Every Company is A Software Company
Offshoring and underinvestment in core technology is
detrimental
solution is not cost cutting, but more effective technology
"tech refresh" is primitive idea, should always refresh
CIO are supposed to be visionary leaders, not accountants
Conway's LawConway's Law
organizations which design systems ... are constrained to
produce designs which are copies of the
communication structures of these organizations
Melvin Conway - 1968
- Sarah Novotny (NGinx)Don't Forget Conway's Law
MelvinConway.com
Good Software Design starts off with Orgnisational Design
Siloed SystemSiloed System
Information and Capabilities lost in translation between silos
Prefered SystemPrefered System
Lead to architecture based around business capabilities
Software Systems must ConnectSoftware Systems must Connect
Information are rarely stored in a single place,
but integration of systems is hard:
Any two applications are different
Application changes are inevitable
Networks are unreliable and slow
, Gregor HohpeEnterprise Integration Patterns
ConclusionConclusion
Technology can differentiate in a competitive world.
Challenge is to process information more efficiently
But building good software is hard:
Traditional siloed teams hinder collaboration
Integrating applications is painful
CaseCase
StudiesStudies
Aladdin PlatformAladdin Platform
25Million lines of code
One stop shop for risk & portfolios
Central DB, no integration needed
20,000 users, 30,000 portfolios
1000+ developers, built over 20 yrs
single point of failure
death by stored procedures
slow change cycle (legacy)
siloed development team
thick client
Built around 1994. Iconic Monolithic, OS for traders
Tightly Coupled SystemsTightly Coupled Systems
= Useless but Deadly Change Review Meetings= Useless but Deadly Change Review Meetings
Legacy monoliths tend to be defensive, "keep the lights on"
Lack of tests -> unknown risks -> afraid to make changes
Making changes is equivalent to "chucking a Prince Oberyn"
BGI Global MesssagingBGI Global Messsaging
Publish / Subscribe
Real time, high speed
Across 3 time zones
Canonical Data + Enrichment
Decoupled end services
custom 3rd party messaging
ESB potential point of failure
Data is Publisher driven
Cross functional stops at ESB
Bottleneck shift to ESB
$$$ internal & external work
Tragedy of the commons
Enterprise Service Bus
ETFCash FixedEquities
Custodians SWIFT
Counter
Party
early 2000s, Traditional SOA, quite ahead of its time:
ESB promises:ESB promises:
That's a lot! Concerned about Separation of Concerns?
Scaling the ESBScaling the ESB
One size fits all: Every on the Bus gets same treatment.
Looser coupling and independent scaling would be nice
ESB in RealityESB in Reality
ConclusionConclusion
Monoliths and tight coupling are bad
ESBs isn't perfect, but stepping in right direction
SolutionSolution
40 years of Service Evolution40 years of Service Evolution
- PWC Technology Forecast 2014
Microservices: The resurgence of SOA principles and an alternative to the monolith
Change ManagementChange Management
- PWC Technology Forecast 2014
Microservices: The resurgence of SOA principles and an alternative to the monolith
What are MicroServicesWhat are MicroServices
NetFlix, Amazon, realestate.com.au, Tyro, Atlassian
http://martinfowler.com/articles/microservices.html
Similar to traditional SOA, except no more ESB
Consumer driven contracts instead of Canonical Data
Fault tolerant and independently scalable
Activity Based Working
SelfSelf
OrgnisingOrgnising
TeamTeam
Cross Functional DeliveryCross Functional Delivery
Business
UI/UX Design
Front End
Dev
Back End
Dev
Infrastructure/
DevOps
ConclusionConclusion
Split into Self Organised Teams around Capabilities
Cross functional collaboration deliver Capabilities
Decoupled and scalable Capabilities collectively
form Microservices Architecture (MSA)
ImplementImplement
(optional homework)(optional homework)
Test Driven DevelopmentTest Driven Development
How do you know when you broke something?
you don't, so write tests!
There is no such thing as untestable code @CodaHale
Highly recommend Uncle Bob's book:
Clean Code
The Clean Coder
Find out more at:
cleancoder.com
cleancoders.com
Write Clean CodeWrite Clean Code
Twelve Factor AppTwelve Factor App
By Heroku:
Some opinionated points that apply to University work:
One Code base - use git: github/bitbucket
Config - use environment variables
Dependencies - use gradle to avoid death by xml:
12factor.net
repositories {
jcenter()
maven { url "http://dl.bintray.com/trunkplatfo
}
}
dependencies {
compile group: 'com.trunkplatform', name: 'servi
}
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>bintray-trunkplatform</id>
<name>bintray</name>
<url>http://dl.bintray.com/trunkplatform/osworkflow</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.trunkplatform.opensymphony</groupId>
<artifactId>service</artifactId>
<version>3.1.4</version>
<scope>compile</scope>
</dependency>
</dependencies>
Use REST, no WSDL/SOAPUse REST, no WSDL/SOAP
{
"streetNumber": "80",
"streetName": "Clarence",
"suburb": "Sydney"
}
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:p="http://www.platmasphere.com/createProperty.xsd">
<p:CreateProperty>
<m:Property>
<m:streetNumber>80</m:streetNumber>
<m:streetName>Clarence</m:streetName>
PUT /hostname/properties/<definitions name="PropertyService"
targetNamespace="http://namespaces.snowboard-info.com"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- not including model schemas -->
<message name="CreatePropertyRequest">
<part name="body" element="CreatePropertyRquestModel"/>
</message>
<message name="GetPropertyResponse">
<part name="body" element="CreatePropertyResponseModel"/>
</message>
<portType name="Properties_Port">
<operation name="CraeteProperty">
<input message="CreatePropertyRequest"/>
<output message="CreatePropertyResponse"/>
<fault message="CreatePropertyFault"/>
</operation>
</portType>
<binding name="CreateProeprtySoapBinding"
type="GreatePropertytType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="CreateProperty">
<soap:operation
soapAction="http://www.platmasphere.com/CreateProperty"/>
<input>
Managed to avoid death by XML again!
Good RESTGood REST
is notis not
Remote Proc Calls over HTTP:
POST /api/getUserById/{id}
POST /api/createUser/
POST /api/updateUser/{id}
POST /api/delUserById/{id}
isis
Resource oriented, http verbs:
GET /api/user/{id}
POST /api/user
DELETE /api/user/{id}
PUT /api/user/{id}
REST Verbs Reference:
http://www.restapitutorial.com/lessons/httpmethods.html
REST in JavaREST in Java
1. Java API for Restful Services:
2. Implemented by Jersey:
3. Made even more awesome by:
https://jax-rs-spec.java.net/
https://jersey.java.net/
http://dropwizard.io/
++ == PROFITPROFIT
Dropwizard.ioDropwizard.io
Dropwizard makes it easy to do the right thing,
allowing you to concentrate on the essential
complexity of a problem rather than the plumbing
ThoughtWorks Technology Radar
Getting Started:
Sample Project with Heroku support:
Our Dropwizard-Turbo LazyBones Template:
http://www.dropwizard.io/getting-started.html
https://github.com/Trunkplatform/dropwizard-petstore
https://github.com/Trunkplatform/lazy-bones-dropwizard-turbo
PostManPostMan
For manual testing: https://www.getpostman.com/
Swagger.ioSwagger.io
Who needs WSDL when you have Interactive Docs
Questions?Questions?
I'll be talking some more at:
- Microservices Meetup 1st AprilDropwizard and Friends
www.trunkplatform.com
Startup focusing on Real Estate
Old industry, new ideas
We are very Contemporary
Self Organised
And we use Microservices
We are Hiring!We are Hiring!

More Related Content

What's hot

Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
VMware Tanzu
 
Netflix MSA and Pivotal
Netflix MSA and PivotalNetflix MSA and Pivotal
Netflix MSA and Pivotal
VMware Tanzu Korea
 
Removing Barriers Between Dev and Ops
Removing Barriers Between Dev and OpsRemoving Barriers Between Dev and Ops
Removing Barriers Between Dev and Ops
cornelia davis
 
MySQL
MySQLMySQL
MySQL
PT.JUG
 
Administration for Oracle ADF Applications
Administration for Oracle ADF ApplicationsAdministration for Oracle ADF Applications
Administration for Oracle ADF Applications
Andreas Koop
 
VMware Tanzu Application Service as an Integration Platform
VMware Tanzu Application Service as an Integration PlatformVMware Tanzu Application Service as an Integration Platform
VMware Tanzu Application Service as an Integration Platform
VMware Tanzu
 
Microservices
MicroservicesMicroservices
Microservices
PT.JUG
 
Tools to Slay the Fire Breathing Monoliths in Your Enterprise
Tools to Slay the Fire Breathing Monoliths in Your EnterpriseTools to Slay the Fire Breathing Monoliths in Your Enterprise
Tools to Slay the Fire Breathing Monoliths in Your Enterprise
VMware Tanzu
 
Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologies
PT.JUG
 
20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM
Taewan Kim
 
The 12 Factors for Building Cloud-Native Software
The 12 Factors for Building Cloud-Native SoftwareThe 12 Factors for Building Cloud-Native Software
The 12 Factors for Building Cloud-Native Software
VMware Tanzu
 
Infrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service FabricInfrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service Fabric
Saba Jamalian
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
PT.JUG
 
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
VMware Tanzu Korea
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17
ankitbhandari32
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
LinkedIn
 
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
VMware Tanzu Korea
 
Dev opsnirvana
Dev opsnirvanaDev opsnirvana
Dev opsnirvana
Prashanth Panduranga
 
Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0
VMware Tanzu
 
InfoSec: Evolve Thyself to Keep Pace in the Age of DevOps
InfoSec: Evolve Thyself to Keep Pace in the Age of DevOpsInfoSec: Evolve Thyself to Keep Pace in the Age of DevOps
InfoSec: Evolve Thyself to Keep Pace in the Age of DevOps
VMware Tanzu
 

What's hot (20)

Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 
Netflix MSA and Pivotal
Netflix MSA and PivotalNetflix MSA and Pivotal
Netflix MSA and Pivotal
 
Removing Barriers Between Dev and Ops
Removing Barriers Between Dev and OpsRemoving Barriers Between Dev and Ops
Removing Barriers Between Dev and Ops
 
MySQL
MySQLMySQL
MySQL
 
Administration for Oracle ADF Applications
Administration for Oracle ADF ApplicationsAdministration for Oracle ADF Applications
Administration for Oracle ADF Applications
 
VMware Tanzu Application Service as an Integration Platform
VMware Tanzu Application Service as an Integration PlatformVMware Tanzu Application Service as an Integration Platform
VMware Tanzu Application Service as an Integration Platform
 
Microservices
MicroservicesMicroservices
Microservices
 
Tools to Slay the Fire Breathing Monoliths in Your Enterprise
Tools to Slay the Fire Breathing Monoliths in Your EnterpriseTools to Slay the Fire Breathing Monoliths in Your Enterprise
Tools to Slay the Fire Breathing Monoliths in Your Enterprise
 
Overview of Eclipse technologies
Overview of Eclipse technologiesOverview of Eclipse technologies
Overview of Eclipse technologies
 
20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM
 
The 12 Factors for Building Cloud-Native Software
The 12 Factors for Building Cloud-Native SoftwareThe 12 Factors for Building Cloud-Native Software
The 12 Factors for Building Cloud-Native Software
 
Infrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service FabricInfrastructure less development with Azure Service Fabric
Infrastructure less development with Azure Service Fabric
 
Useful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with JavaUseful Design Patterns for Enterprise Applications with Java
Useful Design Patterns for Enterprise Applications with Java
 
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
 
Introduce yourself to java 17
Introduce yourself to java 17Introduce yourself to java 17
Introduce yourself to java 17
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
 
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
 
Dev opsnirvana
Dev opsnirvanaDev opsnirvana
Dev opsnirvana
 
Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0Deep Dive into Pivotal Cloud Foundry 2.0
Deep Dive into Pivotal Cloud Foundry 2.0
 
InfoSec: Evolve Thyself to Keep Pace in the Age of DevOps
InfoSec: Evolve Thyself to Keep Pace in the Age of DevOpsInfoSec: Evolve Thyself to Keep Pace in the Age of DevOps
InfoSec: Evolve Thyself to Keep Pace in the Age of DevOps
 

Similar to A Tale of Contemporary Software

Contino Webinar - Migrating your Trading Workloads to the Cloud
Contino Webinar -  Migrating your Trading Workloads to the CloudContino Webinar -  Migrating your Trading Workloads to the Cloud
Contino Webinar - Migrating your Trading Workloads to the Cloud
Ben Saunders
 
The Growth Of Data Centers
The Growth Of Data CentersThe Growth Of Data Centers
The Growth Of Data Centers
Gina Buck
 
Φάννυ Κοφινά, 7th Digital Banking Forum
Φάννυ Κοφινά, 7th Digital Banking ForumΦάννυ Κοφινά, 7th Digital Banking Forum
Φάννυ Κοφινά, 7th Digital Banking Forum
Starttech Ventures
 
Cloud forum-lessons-learned-20110405c-final
Cloud forum-lessons-learned-20110405c-finalCloud forum-lessons-learned-20110405c-final
Cloud forum-lessons-learned-20110405c-finalMauricio Godoy
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
Christophe Rochefolle
 
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
MuleSoft
 
Brighttalk understanding the promise of sde - final
Brighttalk   understanding the promise of sde - finalBrighttalk   understanding the promise of sde - final
Brighttalk understanding the promise of sde - finalAndrew White
 
Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.
Massimo Talia
 
Approaching risk management with your head in the cloud
Approaching risk management with your head in the cloudApproaching risk management with your head in the cloud
Approaching risk management with your head in the cloud
CompatibL Technologies ltd
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
Lanate Drummond
 
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Cloud Native Day Tel Aviv
 
Oracle soa training
Oracle soa training Oracle soa training
Oracle soa training
Trainmiddleware
 
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleDevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
JAXLondon_Conference
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
Ben Stopford
 
Enterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and AppsEnterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and Apps
WSO2
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
Daniel Bryant
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
Chase Aucoin
 
Confluent Partner Tech Talk with SVA
Confluent Partner Tech Talk with SVAConfluent Partner Tech Talk with SVA
Confluent Partner Tech Talk with SVA
confluent
 
Secure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINX
Secure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINXSecure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINX
Secure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINX
NGINX, Inc.
 
Faster EJB Integrations with PlektonLabs EJB Connector.pptx
Faster EJB Integrations with PlektonLabs EJB Connector.pptxFaster EJB Integrations with PlektonLabs EJB Connector.pptx
Faster EJB Integrations with PlektonLabs EJB Connector.pptx
PlektonLabs
 

Similar to A Tale of Contemporary Software (20)

Contino Webinar - Migrating your Trading Workloads to the Cloud
Contino Webinar -  Migrating your Trading Workloads to the CloudContino Webinar -  Migrating your Trading Workloads to the Cloud
Contino Webinar - Migrating your Trading Workloads to the Cloud
 
The Growth Of Data Centers
The Growth Of Data CentersThe Growth Of Data Centers
The Growth Of Data Centers
 
Φάννυ Κοφινά, 7th Digital Banking Forum
Φάννυ Κοφινά, 7th Digital Banking ForumΦάννυ Κοφινά, 7th Digital Banking Forum
Φάννυ Κοφινά, 7th Digital Banking Forum
 
Cloud forum-lessons-learned-20110405c-final
Cloud forum-lessons-learned-20110405c-finalCloud forum-lessons-learned-20110405c-final
Cloud forum-lessons-learned-20110405c-final
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
 
Brighttalk understanding the promise of sde - final
Brighttalk   understanding the promise of sde - finalBrighttalk   understanding the promise of sde - final
Brighttalk understanding the promise of sde - final
 
Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.
 
Approaching risk management with your head in the cloud
Approaching risk management with your head in the cloudApproaching risk management with your head in the cloud
Approaching risk management with your head in the cloud
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
 
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
 
Oracle soa training
Oracle soa training Oracle soa training
Oracle soa training
 
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleDevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
Enterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and AppsEnterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and Apps
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
 
Confluent Partner Tech Talk with SVA
Confluent Partner Tech Talk with SVAConfluent Partner Tech Talk with SVA
Confluent Partner Tech Talk with SVA
 
Secure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINX
Secure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINXSecure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINX
Secure, Strengthen, Automate, and Scale Modern Workloads with Red Hat & NGINX
 
Faster EJB Integrations with PlektonLabs EJB Connector.pptx
Faster EJB Integrations with PlektonLabs EJB Connector.pptxFaster EJB Integrations with PlektonLabs EJB Connector.pptx
Faster EJB Integrations with PlektonLabs EJB Connector.pptx
 

More from Yun Zhi Lin

AWS Lambda Containers - bridging the gap between serverless and containers on...
AWS Lambda Containers - bridging the gap between serverless and containers on...AWS Lambda Containers - bridging the gap between serverless and containers on...
AWS Lambda Containers - bridging the gap between serverless and containers on...
Yun Zhi Lin
 
Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...
Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...
Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...
Yun Zhi Lin
 
Art of Serverless Business Value - Serverless Days Sydney 2019
Art of Serverless Business Value - Serverless Days Sydney 2019Art of Serverless Business Value - Serverless Days Sydney 2019
Art of Serverless Business Value - Serverless Days Sydney 2019
Yun Zhi Lin
 
Anticorrupting the Enterprise - Serverlessconf NYC 2017
Anticorrupting the Enterprise - Serverlessconf NYC 2017Anticorrupting the Enterprise - Serverlessconf NYC 2017
Anticorrupting the Enterprise - Serverlessconf NYC 2017
Yun Zhi Lin
 
Financial Forecasting using Recurrent Neural Network, Social Media and Cloud
Financial Forecasting using Recurrent Neural Network, Social Media and CloudFinancial Forecasting using Recurrent Neural Network, Social Media and Cloud
Financial Forecasting using Recurrent Neural Network, Social Media and Cloud
Yun Zhi Lin
 
Amazingly Simple Serverless Go
Amazingly Simple Serverless GoAmazingly Simple Serverless Go
Amazingly Simple Serverless Go
Yun Zhi Lin
 
Easy Serverless Golang
Easy Serverless GolangEasy Serverless Golang
Easy Serverless Golang
Yun Zhi Lin
 
4 Success stories in 3 years - A Docker Production Journey
4 Success stories in 3 years - A Docker Production Journey4 Success stories in 3 years - A Docker Production Journey
4 Success stories in 3 years - A Docker Production Journey
Yun Zhi Lin
 
Nano Segmentation - A Docker Security Journey
Nano Segmentation - A Docker Security JourneyNano Segmentation - A Docker Security Journey
Nano Segmentation - A Docker Security Journey
Yun Zhi Lin
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
Yun Zhi Lin
 
Microservices and Friends
Microservices and FriendsMicroservices and Friends
Microservices and Friends
Yun Zhi Lin
 
Dropwizard with MongoDB and Google Cloud
Dropwizard with MongoDB and Google CloudDropwizard with MongoDB and Google Cloud
Dropwizard with MongoDB and Google Cloud
Yun Zhi Lin
 

More from Yun Zhi Lin (12)

AWS Lambda Containers - bridging the gap between serverless and containers on...
AWS Lambda Containers - bridging the gap between serverless and containers on...AWS Lambda Containers - bridging the gap between serverless and containers on...
AWS Lambda Containers - bridging the gap between serverless and containers on...
 
Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...
Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...
Applied AI, Open Banking and Continuous Innovation the Easy Way - AI Days Mel...
 
Art of Serverless Business Value - Serverless Days Sydney 2019
Art of Serverless Business Value - Serverless Days Sydney 2019Art of Serverless Business Value - Serverless Days Sydney 2019
Art of Serverless Business Value - Serverless Days Sydney 2019
 
Anticorrupting the Enterprise - Serverlessconf NYC 2017
Anticorrupting the Enterprise - Serverlessconf NYC 2017Anticorrupting the Enterprise - Serverlessconf NYC 2017
Anticorrupting the Enterprise - Serverlessconf NYC 2017
 
Financial Forecasting using Recurrent Neural Network, Social Media and Cloud
Financial Forecasting using Recurrent Neural Network, Social Media and CloudFinancial Forecasting using Recurrent Neural Network, Social Media and Cloud
Financial Forecasting using Recurrent Neural Network, Social Media and Cloud
 
Amazingly Simple Serverless Go
Amazingly Simple Serverless GoAmazingly Simple Serverless Go
Amazingly Simple Serverless Go
 
Easy Serverless Golang
Easy Serverless GolangEasy Serverless Golang
Easy Serverless Golang
 
4 Success stories in 3 years - A Docker Production Journey
4 Success stories in 3 years - A Docker Production Journey4 Success stories in 3 years - A Docker Production Journey
4 Success stories in 3 years - A Docker Production Journey
 
Nano Segmentation - A Docker Security Journey
Nano Segmentation - A Docker Security JourneyNano Segmentation - A Docker Security Journey
Nano Segmentation - A Docker Security Journey
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
Microservices and Friends
Microservices and FriendsMicroservices and Friends
Microservices and Friends
 
Dropwizard with MongoDB and Google Cloud
Dropwizard with MongoDB and Google CloudDropwizard with MongoDB and Google Cloud
Dropwizard with MongoDB and Google Cloud
 

Recently uploaded

top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 

Recently uploaded (20)

top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 

A Tale of Contemporary Software

  • 1. A Tale ofA Tale of Contemporary SoftwareContemporary Software UNSW Guest LectureUNSW Guest Lecture March 2015
  • 2. About MeAbout Me Comp Science Bachelor UNSW Applied Finance PostGrad at Macquarie Uni IBM, Sun, Accenture, BGI/BlackRock, Macquarie Group Now innovating and opinionating at Trunk Platform yunspace yunzhilin yunspace.com My opinions does not reflect the view of the company Shout out if you have questions or need a break
  • 5. Market EfficiencyMarket Efficiency We live in a market Stock prices reflect and adjust to all public information Little room for arbitrage or outrageous profit Information Efficiency also applies to business & competition: What you try to do, others are already doing/copying Your customers are very likely to know more than you​​ You need to process information fast, but also relevant Semi-Strong Efficiency
  • 6. TechnologyTechnology becomes Key Differentiatorbecomes Key Differentiator Superior technology gives competitive advantage: Exploiting Market Anomalies such as Momentum trading Arbitraging tiny inefficiencies: Quantitive, Frequency trading. Destroying information asymmetry and "experts": RPdata Disrupting established markets: Uber, Tesla Providing better UX for boring things: CBA, Simple.com All we need is good software ...
  • 7. Every CompanyEvery Company MUST beMUST be Software CompanySoftware Company The era of separating traditional industries and technology industries is over—and those who fail to adapt right now will soon find themselves obsolete. - Forbes 2011Now Every Company is A Software Company Offshoring and underinvestment in core technology is detrimental solution is not cost cutting, but more effective technology "tech refresh" is primitive idea, should always refresh CIO are supposed to be visionary leaders, not accountants
  • 8. Conway's LawConway's Law organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations Melvin Conway - 1968 - Sarah Novotny (NGinx)Don't Forget Conway's Law MelvinConway.com Good Software Design starts off with Orgnisational Design
  • 9. Siloed SystemSiloed System Information and Capabilities lost in translation between silos
  • 10. Prefered SystemPrefered System Lead to architecture based around business capabilities
  • 11. Software Systems must ConnectSoftware Systems must Connect Information are rarely stored in a single place, but integration of systems is hard: Any two applications are different Application changes are inevitable Networks are unreliable and slow , Gregor HohpeEnterprise Integration Patterns
  • 12. ConclusionConclusion Technology can differentiate in a competitive world. Challenge is to process information more efficiently But building good software is hard: Traditional siloed teams hinder collaboration Integrating applications is painful
  • 14. Aladdin PlatformAladdin Platform 25Million lines of code One stop shop for risk & portfolios Central DB, no integration needed 20,000 users, 30,000 portfolios 1000+ developers, built over 20 yrs single point of failure death by stored procedures slow change cycle (legacy) siloed development team thick client Built around 1994. Iconic Monolithic, OS for traders
  • 15. Tightly Coupled SystemsTightly Coupled Systems = Useless but Deadly Change Review Meetings= Useless but Deadly Change Review Meetings Legacy monoliths tend to be defensive, "keep the lights on" Lack of tests -> unknown risks -> afraid to make changes Making changes is equivalent to "chucking a Prince Oberyn"
  • 16. BGI Global MesssagingBGI Global Messsaging Publish / Subscribe Real time, high speed Across 3 time zones Canonical Data + Enrichment Decoupled end services custom 3rd party messaging ESB potential point of failure Data is Publisher driven Cross functional stops at ESB Bottleneck shift to ESB $$$ internal & external work Tragedy of the commons Enterprise Service Bus ETFCash FixedEquities Custodians SWIFT Counter Party early 2000s, Traditional SOA, quite ahead of its time:
  • 17. ESB promises:ESB promises: That's a lot! Concerned about Separation of Concerns?
  • 18. Scaling the ESBScaling the ESB One size fits all: Every on the Bus gets same treatment. Looser coupling and independent scaling would be nice
  • 19. ESB in RealityESB in Reality
  • 20. ConclusionConclusion Monoliths and tight coupling are bad ESBs isn't perfect, but stepping in right direction
  • 22. 40 years of Service Evolution40 years of Service Evolution - PWC Technology Forecast 2014 Microservices: The resurgence of SOA principles and an alternative to the monolith
  • 23. Change ManagementChange Management - PWC Technology Forecast 2014 Microservices: The resurgence of SOA principles and an alternative to the monolith
  • 24. What are MicroServicesWhat are MicroServices NetFlix, Amazon, realestate.com.au, Tyro, Atlassian http://martinfowler.com/articles/microservices.html Similar to traditional SOA, except no more ESB Consumer driven contracts instead of Canonical Data Fault tolerant and independently scalable
  • 27. Cross Functional DeliveryCross Functional Delivery Business UI/UX Design Front End Dev Back End Dev Infrastructure/ DevOps
  • 28. ConclusionConclusion Split into Self Organised Teams around Capabilities Cross functional collaboration deliver Capabilities Decoupled and scalable Capabilities collectively form Microservices Architecture (MSA)
  • 30. Test Driven DevelopmentTest Driven Development How do you know when you broke something? you don't, so write tests! There is no such thing as untestable code @CodaHale
  • 31. Highly recommend Uncle Bob's book: Clean Code The Clean Coder Find out more at: cleancoder.com cleancoders.com Write Clean CodeWrite Clean Code
  • 32. Twelve Factor AppTwelve Factor App By Heroku: Some opinionated points that apply to University work: One Code base - use git: github/bitbucket Config - use environment variables Dependencies - use gradle to avoid death by xml: 12factor.net repositories { jcenter() maven { url "http://dl.bintray.com/trunkplatfo } } dependencies { compile group: 'com.trunkplatform', name: 'servi } <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>bintray-trunkplatform</id> <name>bintray</name> <url>http://dl.bintray.com/trunkplatform/osworkflow</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.trunkplatform.opensymphony</groupId> <artifactId>service</artifactId> <version>3.1.4</version> <scope>compile</scope> </dependency> </dependencies>
  • 33. Use REST, no WSDL/SOAPUse REST, no WSDL/SOAP { "streetNumber": "80", "streetName": "Clarence", "suburb": "Sydney" } <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:p="http://www.platmasphere.com/createProperty.xsd"> <p:CreateProperty> <m:Property> <m:streetNumber>80</m:streetNumber> <m:streetName>Clarence</m:streetName> PUT /hostname/properties/<definitions name="PropertyService" targetNamespace="http://namespaces.snowboard-info.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <!-- not including model schemas --> <message name="CreatePropertyRequest"> <part name="body" element="CreatePropertyRquestModel"/> </message> <message name="GetPropertyResponse"> <part name="body" element="CreatePropertyResponseModel"/> </message> <portType name="Properties_Port"> <operation name="CraeteProperty"> <input message="CreatePropertyRequest"/> <output message="CreatePropertyResponse"/> <fault message="CreatePropertyFault"/> </operation> </portType> <binding name="CreateProeprtySoapBinding" type="GreatePropertytType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="CreateProperty"> <soap:operation soapAction="http://www.platmasphere.com/CreateProperty"/> <input> Managed to avoid death by XML again!
  • 34. Good RESTGood REST is notis not Remote Proc Calls over HTTP: POST /api/getUserById/{id} POST /api/createUser/ POST /api/updateUser/{id} POST /api/delUserById/{id} isis Resource oriented, http verbs: GET /api/user/{id} POST /api/user DELETE /api/user/{id} PUT /api/user/{id} REST Verbs Reference: http://www.restapitutorial.com/lessons/httpmethods.html
  • 35. REST in JavaREST in Java 1. Java API for Restful Services: 2. Implemented by Jersey: 3. Made even more awesome by: https://jax-rs-spec.java.net/ https://jersey.java.net/ http://dropwizard.io/ ++ == PROFITPROFIT
  • 36. Dropwizard.ioDropwizard.io Dropwizard makes it easy to do the right thing, allowing you to concentrate on the essential complexity of a problem rather than the plumbing ThoughtWorks Technology Radar Getting Started: Sample Project with Heroku support: Our Dropwizard-Turbo LazyBones Template: http://www.dropwizard.io/getting-started.html https://github.com/Trunkplatform/dropwizard-petstore https://github.com/Trunkplatform/lazy-bones-dropwizard-turbo
  • 37. PostManPostMan For manual testing: https://www.getpostman.com/
  • 38. Swagger.ioSwagger.io Who needs WSDL when you have Interactive Docs
  • 39. Questions?Questions? I'll be talking some more at: - Microservices Meetup 1st AprilDropwizard and Friends www.trunkplatform.com Startup focusing on Real Estate Old industry, new ideas We are very Contemporary Self Organised And we use Microservices We are Hiring!We are Hiring!