API Factory

Show & Tell 8

5th June 2019

  • Decided our ‘garage’ was too messy and old so we’re building a new one using a microservices architecture (which we explained in show & tell 4)
  • Created a template for our garages in terraform so that we can create them really quickly (explained in show & tell 6)
  • Decided on our ecosystem (show & tell 7)
  • Synchronised 1 database from UH into our UH simulator
  • Built 2 APIs and are working on a third
  • Embraced agile working and a DevOps culture in the project

Rashmi

What do we want to do?

1

Upskill the development team

2

Have data current services use available 100% of the time

3

Eliminate a single point of failure by moving all services to cloud based infrastructure

Running services from a physical server on Hackney premises means any failure of that server results in all services going down. In the cloud, a replica server can take over if a fault is reported

4

Complete all work to our new standards

Rashmi

How are we doing?

Upskill the development team

We got back to learning, big time, with Cormac from MadeTech who came back for a week.

We learning how to add new databases from UH to the simulator.

Miguel

Extending the UH simulator

  • A SQL Server clone of Hackney's instance of Universal Housing, used for developing and testing integrations locally, as a Docker image.
  • Allows us to do TDD from end to end and it is reusable.

We’re extending it with the UHW database:

  • Contains the DB schema and a subset of the records with all personal identifiable data obfuscated.
  • Customer Information API will make use of it

UH simulator in a docker image

Miguel

Upskill the development team

We baselined our starting level for team skills in 9 areas and came up with a definition for where we want to ‘be’ for each of them.

We’ve had 4 check ins so far and have improved as the radar chart on the next page shows

Rashmi

Upskill the development team

0 - No prior Knowledge

1 - Some awareness

2 - Using it somewhat

3 - Using it competently

4 - Using it enough to challenge / teach confidently

5 - Subject matter expert

Rashmi

Have data available 100% of the time

API Access management

Via the API Hub, users can register and request access tokens

  • Token is per user, per API, per environment to increase security
  • When requested, the access token needs to be verified
  • Users can use the token to access the specified API for the selected environment

We have got this working in test

Mirela

API Access management flow diagram

Mirela

Mirela

API Access management

How will we manage this long term?

  • A per user, per API, per environment approach means there will be a LOT of keys i.e. 1 user needs 3 keys for access to a single APIs environments. Multiply this by 10 users, and you already have 30 keys for a single API.
  • We need to investigate a way that this can remain manageable so that access can be revoked easily when necessary
  • This will form a spike in a forthcoming sprint

Rashmi

Have data available 100% of the time

We’ve had some challenges

Production service issues have removed most of the team from the project for the vast majority of the past sprint. We have prioritised team learning rather than code writing

Rashmi

Complete all work to our new standards

Definition of done

You can’t make a task ‘done’ in JIRA until:

  • All playbook standards are met.
  • All development standards are met.
  • Work is documented in the GitHub Wiki (e.g. Transaction API wiki).
  • All tests pass on CI/CD pipeline.

Rashmi

Give us your feedback and we’ll tell you what we did about it next time!

Rashmi

Who are we?

Selwyn

Miguel

Mirela

Rashmi

Emma

Liudvikas

Emma

The long term (not in this project):

  • Be the single source of truth for housing data provided to services.
  • Have even more data sets than just housing that we deliver to services.
  • To have a development team who are subject matter experts when it comes to our platform and APIs.

Emma

What’s our team vision?

We want to build open APIs so good that people prefer to use them. This means our work has to result in secure, reusable, uniform and scalable code. The services we provide will be resilient and have a knowledgeable, enthusiastic team maintaining and improving them. Along with our partners, we will provide our users with the most effective, efficient service possible.

Emma

Questions?

Emma

API Factory - Show & Tell 8 - Google Slides