Government as a Service - Architecting Australia's govCMS

41
Government as a Service Architecting govCMS Adam Malone @adammalone Solutions Architect APJ, Acquia

Transcript of Government as a Service - Architecting Australia's govCMS

Page 1: Government as a Service - Architecting Australia's govCMS

Government as a ServiceArchitecting govCMS

Adam Malone @adammalone Solutions Architect APJ, Acquia

Page 2: Government as a Service - Architecting Australia's govCMS

About me→Solutions Architect @ Acquia→Drupal age: 4 and a bit →Trivial patch of the month winner→Emoji adept 👸 👷→ typhonius most places online→Didn't realise typhonius was a species of toad

Page 3: Government as a Service - Architecting Australia's govCMS

What is govCMS Why Drupal + Public Cloud

What has been learned How we're off the Island

Future

Page 4: Government as a Service - Architecting Australia's govCMS

In the beginning

Page 5: Government as a Service - Architecting Australia's govCMS

A modern approach to technology→ Policy for eGovernment and the Digital Economy [let’s go online]

→ AU gov’s Open Source Policy [share code and functionality]

→ AU gov’s Cloud Computing Policy (v3) [save costs, ensure security]

→ Best practise service design — DTO [accessibility & easier to use]

Page 6: Government as a Service - Architecting Australia's govCMS

govCMS is a whole of gov re-think about online, agile, accessibility, procurement, security, support and open source.

Not just code.

Page 7: Government as a Service - Architecting Australia's govCMS

Criteria for govCMS

Page 8: Government as a Service - Architecting Australia's govCMS

What is govCMS

Page 9: Government as a Service - Architecting Australia's govCMS

govCMS OOTB→Drupal

→ Security

→Public Cloud

→Deed

→Agile

→Design Standards / Accessibility

→ Services

Page 10: Government as a Service - Architecting Australia's govCMS

Open Source→ Security

→ Reuse

→ Rich pool of resources

→ Off the Island

→ No vendor lock in

Page 11: Government as a Service - Architecting Australia's govCMS

Security→ HTTPS everywhere

→ IP Whitelisting by default

→ No PII (yet)

→ Secure by default

→ Packaged DDOS / CDN

→ Compliant (AWS -> Acquia -> ACE -> ACSF -> govCMS)

→ IRAP assessed against the ISM

Page 12: Government as a Service - Architecting Australia's govCMS

Reuse before buy before buildPrinciple 3 of the Australian Government Open Source Software Policy:

“Australian Government agencies will actively participate

in open source software communities and contribute back where appropriate”

Functionality created by one agency can be made available for all

Page 13: Government as a Service - Architecting Australia's govCMS

Distribution Governance→ Governance is key

→ gOps

→ CAB

→ Requirements driven platform evolution

→ Documented procedures for:

→ Codebase additions

→ Platform deployment

→ Security audits

Page 14: Government as a Service - Architecting Australia's govCMS

The problem

Page 15: Government as a Service - Architecting Australia's govCMS

Leapfrogging giants

Page 16: Government as a Service - Architecting Australia's govCMS

Many departments, one govCMS

Agency

govCMS Platform

govCMS Core

Page 17: Government as a Service - Architecting Australia's govCMS

Patterns

Page 18: Government as a Service - Architecting Australia's govCMS

govCMS Patterns→Pattern 1

→govCMS OOTB

→Pattern 2

→Transitionary state

→Platform evolves to meet requirements

→Pattern 3

→Custom

Page 19: Government as a Service - Architecting Australia's govCMS

Architecture

Page 20: Government as a Service - Architecting Australia's govCMS

Platform build

Page 21: Government as a Service - Architecting Australia's govCMS

Patch workflow

→Regularly scheduled releases

→Prepared for hotfixes

→Distribution

→Feature branch workflow

Page 22: Government as a Service - Architecting Australia's govCMS

There's a module for that!

→Critically define requirements

→Solve the unspoken question

→Consider the platform, not just the site

→Module/requirement review

→Problem rather than module

Page 23: Government as a Service - Architecting Australia's govCMS

Keeping the codebase lean

→No need to recreate the wheel

→Change management becomes easier

→Leveraging the community

→Remember what brought us here

Page 24: Government as a Service - Architecting Australia's govCMS

The technical bits

Page 25: Government as a Service - Architecting Australia's govCMS

Cloud

→AWS Sydney

→Constant 24/7 operational monitoring

→Disaster Recovery

→7 years of:

→Offsite site archival

→Offsite log storage

Page 26: Government as a Service - Architecting Australia's govCMS

Acquia Cloud Site Factory

→SaaS application for Drupal

→Simplifies multisite management and operation

→Granular access per site/group

→Many sites, one codebase

→Site duplication

→Theming flexibility

Page 27: Government as a Service - Architecting Australia's govCMS

Tooling

→Drupal

→Drush Make

→Phing

→Composer

→PhantomJS

→PHPCS

→Behat

→Git

→Travis CI

→Autodeploy

Page 28: Government as a Service - Architecting Australia's govCMS

Building

Dependancies: git & composer

$ git clone [email protected]:govCMS/govCMS.git

$ cd govCMS

$ composer install --prefer-dist --working-dir=build

$ build/bin/phing -f build/phing/build.xml build

Page 29: Government as a Service - Architecting Australia's govCMS

Testing

→Code

→Syntactically correct

→Drupal coding standards

→Cyclometric complexity

→Functional/Behavioural

→Behat

→Automated deployments

Page 30: Government as a Service - Architecting Australia's govCMS

Behavioural testing

Feature: govCMS Google Analytics

Ensure the govCMS Google Analytics account is added.

Scenario: Check that the GA markup appears Given I go to the homepage Then the response should contain "UA-12312312-1"

Page 31: Government as a Service - Architecting Australia's govCMS

The benefits

Page 32: Government as a Service - Architecting Australia's govCMS

Benefits to agencies→Setup cost drastically reduced

→Elimination of lengthy procurement/tendering process

→Security/IRAP assessment completed

→ Increase agility

→24/7 Support

→Pro-active alerting

→Security updates

Page 33: Government as a Service - Architecting Australia's govCMS

Benefits to Australian residents

→Familiarity

→Rapid iteration and development

→Savings passed on

Page 34: Government as a Service - Architecting Australia's govCMS

Benefits to government employees

→Freedom to contribute

→Agile process

→Modern tools

→Transferable skills

→Contributing to Open Source

Page 35: Government as a Service - Architecting Australia's govCMS

Benefits to the Drupal community

→Flagship Drupal exemplar

→Mandate to contribute enhancements

→ Increasing skills in Australia

→A stake in the ground worldwide

Page 36: Government as a Service - Architecting Australia's govCMS

Future

Page 37: Government as a Service - Architecting Australia's govCMS

Extending govCMS

→Expanded functionality

→Further interdepartmental sharing

→DTO

→Government as an API

→Services

Page 38: Government as a Service - Architecting Australia's govCMS

govCMS Worldwide

→Wider impact on Open Source as an example

→KiwiCMS?

→SgCMS?

→UniCMS?

Page 39: Government as a Service - Architecting Australia's govCMS

Try govCMS

→Fork us on GitHub

→https://github.com/govCMS

→Download from drupal.org

→https://www.drupal.org/project/govcms

Page 40: Government as a Service - Architecting Australia's govCMS

Resources→ http://www.communications.gov.au/

digital_economy

→ http://www.finance.gov.au/policy-guides-procurement/open-source-software

→ http://www.finance.gov.au/policy-guides-procurement/cloud

Page 41: Government as a Service - Architecting Australia's govCMS

Questions?@adammalone

typhonius

[email protected]

https://www.adammalone.net

https://www.acquia.com