Green shoots in the brownest field Being a startup in government - - PowerPoint PPT Presentation

green shoots in the brownest field
SMART_READER_LITE
LIVE PREVIEW

Green shoots in the brownest field Being a startup in government - - PowerPoint PPT Presentation

Green shoots in the brownest field Being a startup in government Mat Wall (@matwall) Government Digital Service https://www.gov.uk Friday, 8 March 13 GDS Government development skills largely outsourced in 80s Government IT vendor driven,


slide-1
SLIDE 1

Green shoots in the brownest field

Mat Wall (@matwall) Government Digital Service https://www.gov.uk Being a startup in government

Friday, 8 March 13

slide-2
SLIDE 2

GDS

Government development skills largely outsourced in 80s Government IT vendor driven, procurement focussed People who can write code (not COBOL) very rare

Friday, 8 March 13

slide-3
SLIDE 3

GDS set up about 18 months ago Bring digital capability & vision into government Stimulate economy of smaller vendors A startup within government

Friday, 8 March 13

slide-4
SLIDE 4

Initially build alpha of GOV.UK Now fully released into production Migrating government department sites Beginning to work on transactions

Friday, 8 March 13

slide-5
SLIDE 5

Design Principles 1. Start with user needs 2. Do less 3. Design with data 4. Do the hard work to make it simple 5. Iterate wildly 6. Build for inclusion 7. Understand context 8. Build services, not websites 9. Be consistent, not uniform

  • 10. Make things open: it makes things better

https://www.gov.uk/designprinciples

Friday, 8 March 13

slide-6
SLIDE 6

reboot the government

Friday, 8 March 13

slide-7
SLIDE 7

GOV.UK

Friday, 8 March 13

slide-8
SLIDE 8

Quick answers

Friday, 8 March 13

slide-9
SLIDE 9

Quick answers

Friday, 8 March 13

slide-10
SLIDE 10

Quick answers

Friday, 8 March 13

slide-11
SLIDE 11

Detailed guides

Friday, 8 March 13

slide-12
SLIDE 12

Detailed guides

Friday, 8 March 13

slide-13
SLIDE 13

Transactions

Friday, 8 March 13

slide-14
SLIDE 14

Transactions

Friday, 8 March 13

slide-15
SLIDE 15

Department sites

Friday, 8 March 13

slide-16
SLIDE 16

Department sites

Friday, 8 March 13

slide-17
SLIDE 17

Light weight architecture & development Focussed on user needs Good example of “How to do it” across government

Friday, 8 March 13

slide-18
SLIDE 18

Strategic architecture

Friday, 8 March 13

slide-19
SLIDE 19

Very common in government IT Small number of in house architects Often not hands on Almost all development outsourced

Friday, 8 March 13

slide-20
SLIDE 20

Lay down ground rules Select technologies up front Often vendor focussed / led

Friday, 8 March 13

slide-21
SLIDE 21

Attempt to: reduce risk minimise cost produce predictable results

Friday, 8 March 13

slide-22
SLIDE 22

Insert strategic architecture here

Friday, 8 March 13

slide-23
SLIDE 23

Friday, 8 March 13

slide-24
SLIDE 24

ESB

Friday, 8 March 13

slide-25
SLIDE 25

ESB ESB

Friday, 8 March 13

slide-26
SLIDE 26

ESB ESB

Friday, 8 March 13

slide-27
SLIDE 27

ESB ESB OPA

Friday, 8 March 13

slide-28
SLIDE 28

ESB ESB OPA EDM

Friday, 8 March 13

slide-29
SLIDE 29

ESB ESB OPA EDM WEB WEB WEB WEB

Friday, 8 March 13

slide-30
SLIDE 30

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff

Friday, 8 March 13

slide-31
SLIDE 31

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff XML translation layer

Friday, 8 March 13

slide-32
SLIDE 32

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff XML translation layer SAN SAP

Friday, 8 March 13

slide-33
SLIDE 33

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff XML translation layer SAN SAP Enterprise app servers

Friday, 8 March 13

slide-34
SLIDE 34

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff XML translation layer SAN SAP Enterprise app servers

Now, what shall we make?

Friday, 8 March 13

slide-35
SLIDE 35

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff XML translation layer SAN SAP Enterprise app servers

Imagine being a developer here Most decisions made for you Little room for innovation

Friday, 8 March 13

slide-36
SLIDE 36

reduce risk = no innovation, create lock in minimise cost = ha ha predictable results = slow delivery

Friday, 8 March 13

slide-37
SLIDE 37

Platforms

Friday, 8 March 13

slide-38
SLIDE 38

Platforms first = bottom up architecture We want to focus on user needs first

Friday, 8 March 13

slide-39
SLIDE 39

Most of our apps start out as a rough idea

  • n someones laptop, not as a platform

Friday, 8 March 13

slide-40
SLIDE 40

Platforms emerge by constant delivery

Friday, 8 March 13

slide-41
SLIDE 41

Space

Friday, 8 March 13

slide-42
SLIDE 42

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services Web routing Provisioning Configuration management Services / libraries Persistence Monitoring

Friday, 8 March 13

slide-43
SLIDE 43

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services Ruby / rails / sinatra/ jekyll Scala / play 2.0 Java / dropwizard MongoDB, MySql, ElasticSearch, Redis nginx, varnish, Akami puppet statsd / graphite / nagios / ganglia funkload

Friday, 8 March 13

slide-44
SLIDE 44

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services Space

Friday, 8 March 13

slide-45
SLIDE 45

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services

.gov.uk frontend inside gov smart answers licensing search Content API Publisher Panopticon MongoDB MySQL CMS tools Licensing admin Sign on need-o-tron

Friday, 8 March 13

slide-46
SLIDE 46

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services

.gov.uk frontend search Content API Publisher Panopticon MongoDB need-o-tron routing

Friday, 8 March 13

slide-47
SLIDE 47

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services

.gov.uk frontend search Content API Publisher Panopticon MongoDB need-o-tron routing

Content model split across apps Complex interaction between apps Brittle, what if interaction fails?

Friday, 8 March 13

slide-48
SLIDE 48

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services

.gov.uk frontend search Content API Publisher Panopticon MongoDB need-o-tron routing

Friday, 8 March 13

slide-49
SLIDE 49

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services

.gov.uk frontend search Content API Publisher Panopticon MongoDB need-o-tron routing

Friday, 8 March 13

slide-50
SLIDE 50

P r

  • t
  • t

y p i n g Provisioning Configuration Persistence CDN, web & routing Continuous integration Monitoring Alerting Performance test Libraries / gems / jars / utils Services

.gov.uk frontend search Content API / Panopticon Publisher MongoDB need-o-tron routing Event broadcast

Friday, 8 March 13

slide-51
SLIDE 51

Space

Help developers create a safe space Create small, simple apps in that space Provide lightweight components & processes, and ability to create more Don’t worry about trying to solve all of the problems up front Allow for innovation & learning

Friday, 8 March 13

slide-52
SLIDE 52

Momentum

Friday, 8 March 13

slide-53
SLIDE 53

Momentum

We far prefer momentum to strategy Make decisions as late as possible Short iterations mean you can’t go to far wrong Easy to put things back on track Allows for innovation, experiment & learning

Friday, 8 March 13

slide-54
SLIDE 54

New system: apply to register to vote (ERTP) Initially seemed quite simple Surely just a form and a database? Real world is more complex

Friday, 8 March 13

slide-55
SLIDE 55

Local authority 1 Local authority 2 Local authority 387

....

Citizens DWP

Friday, 8 March 13

slide-56
SLIDE 56

Citizen API Local auth API Matching API Local authority 1 Local authority 2 Local authority 387

....

DWP

Web space LA space DWP space

Friday, 8 March 13

slide-57
SLIDE 57

Citizen API Local auth API Matching API Local authority 1 Local authority 2 Local authority 387

....

DWP MongoDB Frontend web Feeds Monitoring

Friday, 8 March 13

slide-58
SLIDE 58

Local auth API Matching API Local authority 1 Local authority 2 Local authority 387

....

DWP Frontend web

Friday, 8 March 13

slide-59
SLIDE 59

Local auth API Matching API Local authority 1 Local authority 2 Local authority 387

....

DWP Frontend web

Friday, 8 March 13

slide-60
SLIDE 60

Local auth API Matching API Local authority 1 Local authority 2 Local authority 387

....

DWP Frontend web

Friday, 8 March 13

slide-61
SLIDE 61

Local auth API Matching API Local authority 1 Local authority 2 Local authority 387

....

DWP Frontend web

Anything goes to keep momentum

Friday, 8 March 13

slide-62
SLIDE 62

Legacy / complex systems

Friday, 8 March 13

slide-63
SLIDE 63

So far most of our systems have been very simple Easy to be small, beautiful & agile But that will change with transactions

Friday, 8 March 13

slide-64
SLIDE 64

Government IT estate complex, old Pre-web technologies Oldest system I have found so far is 40 years! How can we work in this environment? How can we retain our momentum?

Friday, 8 March 13

slide-65
SLIDE 65

ESB ESB OPA EDM WEB WEB WEB WEB Security stuff XML translation layer SAN SAP Enterprise app servers

Friday, 8 March 13

slide-66
SLIDE 66

Integration strategies: Could rebuild old system. Could export data from old system into new. Use what we have learned to create our own space, with our own momentum

Friday, 8 March 13

slide-67
SLIDE 67

Shiny application Domain API Domain API

Create prototype application backed of simple REST domain APIS Each API encapsulates a single domain concept (ie: User profile, transaction history, application service) Domain APIs filled with mock data HTTP integration test suite produced

Domain API Domain API

Friday, 8 March 13

slide-68
SLIDE 68

Shiny application Domain API Domain API

Integration tests form spec that can be shared between old & new world Api built by new team, using old APIs / integrations APIs can be built in existing system, by existing team Or as a joint effort, using a facade

Domain API Domain API

Friday, 8 March 13

slide-69
SLIDE 69

Shiny application Domain API

New space Old space

Friday, 8 March 13

slide-70
SLIDE 70

Shiny application Domain API

New space Old space http, JSON GET /user/341353/transactions select * from transactions where userId=431353

Friday, 8 March 13

slide-71
SLIDE 71

Shiny application Domain API

New space Old space

database Data feed

Friday, 8 March 13

slide-72
SLIDE 72

Give developers space then get out of the way Momentum is king

Friday, 8 March 13

slide-73
SLIDE 73

http://github.com/alphagov http://digital.cabinetoffice.gov.uk/ https://www.gov.uk

Friday, 8 March 13