A self-service, secure and available service platform
The city of Oslo aims to continuously improve technology and organizational performance. To achieve these goals we focus on increased team autonomy and a kick-ass developer experience.
The importance of organizational performance
The platform and the developer experience outlined below is impossible to implement without the right level of team autonomy and delegated authority. Achieving empowered teams is a topic for another time, although we frequently share our experiences with this as well.
What is a service platform?
The short version sounds like this:
"A service platform (being self-serviced by teams) is a tool for efficient development — the smart way of doing agile development with delegated authority."
A slightly longer version:
"A service platform is all you need to be effective developing whatever solution you like, with support for all aspects of the development process — including integrating with others, sharing your stuff, innovating, designing, building, shipping and iterating!"
The service platform consists of several components, as shown in the above illustration. The platform is the number one go-to guy (or girl) for development teams. It makes available the services, tools and documentation necessary to do effective systems development.
Explaining all the components of the platform in detail is out of scope for this blogpost, but look forward to future updates on the specific components.
Here’s a brief explanation of the main parts.
- The developer portal enables the different developer communities in the city of Oslo to share experiences and services. By establishing a common front-end for sharing APIs, guides and guidelines. This portal is a hub for innovation and development.
- Labs. An experimentation and innovation lab. Including hardware lab and employer branding.
- Identity. Common identity and identity access management for internal and external users of the city services.
- The data platform. Enables teams to hook up to a secure data information hub offering analytics, AI, IoT, ETL-tools and reporting via dashboards.
- The runtime platform. Consists of different runtimes, including on-premise and cloud providers.
- API management. Tools and services for managing your APIs, being authentication, documentation, quotas, monitoring etc.
- Tooling. Common tooling for build- and delivery pipelines, version control, monitoring, issue-tracking, etc.
- Design lab. A set of style guides, brand book, visual identity, and service design methods.
- Culture. Building the right culture, and explicitly defining it, is key. A culture handbook defines a set of principles that are regularly updated and decided by the teams. It basically includes a set of guidelines and our standards for development and architecture. The handbook is also regularly updated by a technology radar for the enterprise.
The developer experience
To increase service delivery performance, teams need access to the best tools available. This is why we choose to make the best cloud services available and let the teams choose their preferred technical solutions. But at scale, with many parallel teams, we need some kind of alignment. Do not underestimate the difficulty searching for existing code and services, ensuring privacy, limiting technical debt, managing a common identity, secure sharing of data etc. This is what building a service platform is all about. It’s a fine balance between standardization and freedom.
The importance of self-service
We strive to make all parts of the platform self-service for teams. For example you don’t have to involve other parts of your organization when you are delivering code to production, utilizing an external API, searching for existing solutions or simply creating a new data store. This is made possible with autonomous multi disciplinary teams.
Shift left on security
Above we talked briefly about the developer experience and the need for speed in systems development. Not to be forgotten is the privacy and security of the services and data implemented by teams. It is extremely important that we are doing privacy and security by design, and are doing this by making it a central part of the developers mindset. The teams should be given the tooling, access to competence, time and responsibility to make everything secure and available.
By making services default available, embracing openness and transparency, we will make Oslo go fast forward without jeopardizing security or privacy. We will do this by making a self-service service platform available to all teams interested in delivering modern services to the public of Oslo. With the platform as an enabler for open innovation, we invite others, both public and private sector, to reuse data and services.
And this is just the beginning.
This article was first posted on the city of Oslo developer blog. The author has permission to post it here on medium and on knowitlabs.no. Knowit is a proud partner to the city of Oslo, helping them building a digital platform for innovation and reuse of data and services.