We are going to develop some APIs with ASP.NET Core 2.0 in this series so we need to decide what we are going to build. This series is enterprise focused but honestly the idea of building a regular enterprise system doesn't sound super fun. So we are going to kill two birds with one stone, we are going to build an API governance system. API governance is a topic for this series as it is vital in a large organisation, but it is also quite an interesting concept.
All the main API managers out there (API Connect, ApiGee, Mashery etc) come with a governance solution. But this is primarily a learning vehicle so what the hell.
Let's define the main functionalities and group them into APIs. This is still at an early stage, so things might change as we build it.
Responsible for managing users, teams and approvers of an organisation. Also the list business domains and sub domains are managed which allows us to classify and group APIs. Domains and sub domains can also have people associated that must be involved in approvement processes.
- Roles (Approver, Team Member etc)
The central registry for APIs and the central engine for API governance.
- Domains and Sub Domains
- API CRUD
- API Workflow (all new APIs go through a review and approval process)
- API Docs (Swagger)
- API Changelog and Roadmap
User authentication and authorization. We'll use IdentityServer4 here to provide OAuth 2.0 and OpenID Connect support.
Provide data for reports and offer data mining features.
Changes to the data in the system will be logged. It will be possible to view the audit log and also see the state of APIs in the past including their Swagger docs.
I'm not going to build all of that straight away, if at all. We'll concentrate on the Registry and Organisation APIs at first, then move to the Auth API soon after.
Let's remember that at this stage, Govrnanza is a vehicle for learning about API implementation with ASP.NET Core 2.0 and other technologies. I am not suggesting that it will be a real-world governance framework. However, if anyone does want to contribute then I would be more than happy to see how far we can take it.
I have created a repo on Github: https://github.com/Vanlightly/Govrnanza
See the series introduction with links to the rest of the series here.