do i still hate soa n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Do I still hate SOA? PowerPoint Presentation
Download Presentation
Do I still hate SOA?

Loading in 2 Seconds...

play fullscreen
1 / 157

Do I still hate SOA? - PowerPoint PPT Presentation


  • 96 Views
  • Uploaded on

Do I still hate SOA?. JavaZone Johannes Brodwall, Steria Organized Architect Steria Norway. Crazy trucker coder is right. What do I care about ?. People ( def : Users and programmers). In large projects ( def : 10-100 people ). In complex orgs

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Do I still hate SOA?


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
do i still hate soa

Do I still hate SOA?

JavaZone

Johannes Brodwall, SteriaOrganizedArchitect

SteriaNorway

slide10

People

(def: Users and programmers)

slide11

In large projects

(def: 10-100 people)

slide12

In complexorgs

(def: Whereintegration is paramount)

slide15

Howwedon’twantourprojects to be

Architectureimpactspeople

Teams ProduceBusiness-value

Simple technology

Feature oriented teams

Referencearchitecture

Reuse

Costs and benefits

Strategic and tactical

slide17

Front End Team

RulesEngine Team

Service Layer Team

PM

J Random

slide18

”UsergetsDataBindingExceptionwhensubmittingpayment (seeattached SOAP msg)”

Jira

J Random

slide19

Test server

Reproduce…

Paymentsvc

J Random

slide20

Test server

Paymentsvc

J Random

slide21

Payment Service

Whichofthelayers is thebug in…?

Payment XML

Payment DTO

Domain

J Random

Rules DTO

Rules XML

Rules

slide22

Front End Team

You sent a newfield: currency

RulesEngine Team

Service Layer Team

PM

J Random

slide23

Front End Team

You sent a newfield: currency

Didn’tyougetthe memo?

RulesEngine Team

Service Layer Team

PM

J Random

slide24

Payment Service

Payment XML

Sigh!

Payment DTO

Domain

J Random

Rules DTO

Rules XML

Rules

slide25

Test server

New version

J Random

slide26

Test server

New version

J Random

slide27

Test server

Let’s test it out

New version

J Random

slide28

Test server

It lookgood. Waaait….

Okay

Okay

Okay

Okay

Not okay

Okay

Okay

Okay

Okay

J Random

slide29

Test server

Duh! Null pointer exception!

Okay

Okay

Okay

Okay

Not okay

Okay

Okay

Okay

Okay

J Random

slide30

Test server

New version

J Random

slide31

Howdid it get to this?

Test server

New version

J Random

slide32

Whatdoesthe program do?

I’m just a smallcog in a bigmachine

What’s up with all this data shuffling?

J Random

slide34

UI

UI

UI

UI

Service

Service

Service

Service

Reused service

Reusedlibrary

Data

Data

Data

Data

slide35

Reusefixation

Technol-orgy

Bad architecture

Team per component

Suffering

slide36

Front End Team

Of coursethe Front End guyscandealwith an empty list

RulesEngine Team

Service Layer Team

PM

slide37

I bettercheckthatfield is present

Front End Team

I bettercheckthatfield is present

I bettercheckthatfield is present

RulesEngine Team

Service Layer Team

PM

slide38

Front End Team

I wonderifanyonewillusethis

RulesEngine Team

Service Layer Team

PM

slide39

Donewith A soon?

Front End Team

RulesEngine Team

Service Layer Team

PM

slide40

Donewith A soon?

Front End Team

I’mdone, I just have to wait for therulesengine!

RulesEngine Team

Service Layer Team

PM

slide41

Donewith A soon?

Front End Team

I’mdone, I just have to wait for therulesengine!

… and then test it

RulesEngine Team

Service Layer Team

PM

slide42

Donewith A soon?

Front End Team

I’mdone, I just have to wait for therulesengine!

… and then test it

RulesEngine Team

… and thenfixthattinybug

Service Layer Team

PM

slide43

Donewith A soon?

Front End Team

I’mdone, I just have to wait for therulesengine!

RulesEngine Team

Service Layer Team

PM

I betterhurrywith B, everyone’swaiting

slide44

!

Front End Team

Bahamas!

RulesEngine Team

Service Layer Team

Overworked!

Prouddad!

PM

Baby

slide45

Canyouguyshelpout?

Front End Team

Bahamas!

RulesEngine Team

Service Layer Team

Overworked!

Prouddad!

PM

Baby

slide46

Canyouguyshelpout?

Front End Team

Bahamas!

Would love to help, but I don’t know rulesengine

RulesEngine Team

Service Layer Team

Overworked!

Prouddad!

PM

Baby

Overworked!

slide47

This iteration, ProductOwner just wants to improvethe UI

!

Front End Team

RulesEngine Team

Service Layer Team

PM

slide52

UI

UI

UI

UI

Service

Service

Service

Service

Reused service

Reusedlibrary

Data

Data

Data

Data

slide53

UI

UI

UI

UI

Service

Service

Service

Service

Reused service

Reusedlibrary

Data

Data

Data

Data

slide54

A feature team

Is connected to a user

Has a referencestack

Ownsthewholestack

slide55

User:

Human or machine

slide56

Service

GUI

Logic

Data

slide59

Simplicity

Avoidtechnolorgy

(My referencearchitecture)

slide61

Client

Client Jar (Java Web Start)

Executable jar file

Web application (war)

App Server (Jetty jar)

slide63

Server WAR

Client JAR

Coreclasses

slide70

Database

Migrations

Hibernate

SOAP over http

Entities

Messaging

http remoting

Commands

Packaging

Unit tests

Deployment

FitNesse

Monitoring

slide73

ApplicationFrame [http://server:8088/service]

Menu

PersonWindow

Window 2

Window 2

Etc.

PersonWindow

Toolbar

Work area

slide79

Repository

Hibernate

The real deal

Veryslowstartup

HashMap

In memoryfake

Quickstartup

Used for unit tests

slide82

private Specification<Person> getSpecification() {

returnnewFilterSpecification<Person>() {

@Override

publicvoid populate(EntityFilter filter) {

filter.propertyEqualsOrNull("country", country);

filter.propertyMatchesOrNull("name", namePattern);

}

};

}

slide84

@RunWith(RepositoryTestRunner.class)

publicclassPersonWindowTest {

private Repository repository;

privatePersonWindowpersonWindow;

publicPersonWindowTest(Repository repo) {

this.repository = repo;

this.personWindow = newPersonWindow(repo);

}

slide85

@Test

publicvoidshould_find_people() {

Person person = new Person(“John Random");

repository.insert(person);

personWindow.getSearchButton().doClick();

assertEquals(personWindow.getTableCell(0,1),

person.getName());

}

slide89

File System

File Scanner

File Writer

Message Responder

Repository

Scan

Move to tmp

Transactional

Commit

Delete file

Transactional

Nextmessage

Find data

Writeresponse

Transactional

Nextresponse

Write to tmp

Commit

Move to target

slide91

UI

Application

Command

FileSystm

Adapter

Entities

HttpSoap

Adapter

Repository

Hibernate

slide93

Poll vs push

Programmer providesproof

slide94

SQL

Best requirementfit

slide95

Server abstraction

Developers show theway

slide96

Specification

Developersrequiredbetterabstractions

slide97

Hibernate

Go to Christin’slightning talk

(T -24hrs)

slide99

Ubiquitiousentities

Genericrepository

Commandoriented

slide100

A feature team

Is connected to a user

Has a referencestack

Ownsthewholestack

slide102

Don’t make

Strategicdecision

basedon

Tacticalreasons

slide104

Valueofreuse =

Costofnewdev – costofreuse

slide105

Valueofreuse =

Costofnewdev

costofreusability

costofreusing

- costofgovernance

slide107

Relative costofwriting for reuse:

125%-300%

Documentation

Input validation

Testing

Wider usage

Publishing

slide109

Relative costofreuse:

10%-40%

Finding

Not finding

Adapting

Bugs

Learning

slide112

Client A 1.0

Client B 1.0

Enterprise Payment

slide113

Client A 1.0

Client B 1.0

Enterprise Payment

slide114

Client A 2.0

Client B 1.0

EnterprisePayment2.0

slide115

Client A 2.0

Client B 1.0

EnterprisePayment2.0

slide116

Stable (AKA dead) service

Client A 1.0

Client B 1.0

Service 1.0

slide117

Libraryreuse

Client A 2.0

Client B 1.0

Service2.0

Service1.0

slide118

Multiversion service

Client A 2.0

Client B 1.0

Service 2.0

Adapter

slide119

Service bus

Client A 2.0

Client B 1.0

Magicbox!! !

Service 2.0

slide120

Valueofreuse =

Costofnewdev – costofreuse

slide123

https://www.paypal.com/cgi-bin/webscr?business=paypal%40smidig.no&cmd=_cart&upload=1&currency_code=NOK&notify_url=http%3A%2F%2Fstagingsmidig.heroku.com%2Fpayment_notifications&return=http%3A%2F%2Fstagingsmidig.heroku.com%2Fusers%2F485&invoice=2011t-486&amount_1=10.0&item_name_1=Earlybird-billett+til+Smidig+2011&item_number_1=1&quantity_1=1https://www.paypal.com/cgi-bin/webscr?business=paypal%40smidig.no&cmd=_cart&upload=1&currency_code=NOK&notify_url=http%3A%2F%2Fstagingsmidig.heroku.com%2Fpayment_notifications&return=http%3A%2F%2Fstagingsmidig.heroku.com%2Fusers%2F485&invoice=2011t-486&amount_1=10.0&item_name_1=Earlybird-billett+til+Smidig+2011&item_number_1=1&quantity_1=1

slide125

EDIFACT

(The UN punishesthosewhospeak ill of XML)

slide143

Strategicreuse

Highvalue

Often services

New functionality

slide145

Tacticalreuse

Lowvalue

Oftencomponent

Reducecost

Opportunistic

slide146

Don’t make

Strategicdecision

basedon

Tacticalreasons

slide150

Architecturalchoices

Affectpeople

Conway’slaw

slide151

Reuse

Tacticalvsstrategic

slide153

As a programmer

Meettheuser

Ownthewholestack

Speakyourmind

slide154

As an architect

Organize teams per feature

Simple referencearchitecture

Welcomedissent

please disagree
Pleasedisagree

johannes.brodwall@steria.no

http://johannesbrodwall.com

http://sterkblanding.no

http://twitter.com/jhannes