SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
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 reïŹ‚ect the view of the company
Shout out if you have questions or need a break
ChallengesChallenges
Case StudiesCase Studies
SolutionSolution
Implement*Implement*
ChallengesChallenges
Market EïŹƒciencyMarket EïŹƒciency
We live in a market
Stock prices reïŹ‚ect and adjust to all public information
Little room for arbitrage or outrageous proïŹt
Information EïŹƒciency 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 EïŹƒciency
TechnologyTechnology
becomes Key DiïŹ€erentiatorbecomes Key DiïŹ€erentiator
Superior technology gives competitive advantage:
Exploiting Market Anomalies such as Momentum trading
Arbitraging tiny ineïŹƒciencies: 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 ïŹnd themselves obsolete.
- Forbes 2011Now Every Company is A Software Company
OïŹ€shoring and underinvestment in core technology is
detrimental
solution is not cost cutting, but more eïŹ€ective 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 oïŹ€ 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 diïŹ€erent
Application changes are inevitable
Networks are unreliable and slow
, Gregor HohpeEnterprise Integration Patterns
ConclusionConclusion
Technology can diïŹ€erentiate in a competitive world.
Challenge is to process information more eïŹƒciently
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 ïŹts 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
ConïŹg - 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!

Weitere Àhnliche Inhalte

Was ist angesagt?

Was ist angesagt? (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
 

Ähnlich wie A Tale of Contemporary Software

Cloud forum-lessons-learned-20110405c-final
Cloud forum-lessons-learned-20110405c-finalCloud forum-lessons-learned-20110405c-final
Cloud forum-lessons-learned-20110405c-final
Mauricio Godoy
 
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
Andrew White
 
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
 
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
 

Ähnlich wie 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
 

Mehr von Yun Zhi Lin

Mehr von 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
 

KĂŒrzlich hochgeladen

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

KĂŒrzlich hochgeladen (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 

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 reïŹ‚ect the view of the company Shout out if you have questions or need a break
  • 5. Market EïŹƒciencyMarket EïŹƒciency We live in a market Stock prices reïŹ‚ect and adjust to all public information Little room for arbitrage or outrageous proïŹt Information EïŹƒciency 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 EïŹƒciency
  • 6. TechnologyTechnology becomes Key DiïŹ€erentiatorbecomes Key DiïŹ€erentiator Superior technology gives competitive advantage: Exploiting Market Anomalies such as Momentum trading Arbitraging tiny ineïŹƒciencies: 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 ïŹnd themselves obsolete. - Forbes 2011Now Every Company is A Software Company OïŹ€shoring and underinvestment in core technology is detrimental solution is not cost cutting, but more eïŹ€ective 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 oïŹ€ 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 diïŹ€erent Application changes are inevitable Networks are unreliable and slow , Gregor HohpeEnterprise Integration Patterns
  • 12. ConclusionConclusion Technology can diïŹ€erentiate in a competitive world. Challenge is to process information more eïŹƒciently 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 ïŹts 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 ConïŹg - 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!