Challenge Overview
Context
Project Context
Staircase develops modern mortgage infrastructure with developer-friendly APIs. In this project, we are going to help Staircase build one delivery platform.
Challenge Context
In this challenge, we will create several APIs and create database models.
Expected Outcome
- OpenAPI definition
- Database ERD
- API and database mapping
- API and requirements mapping
Challenge Details
The project is built to allow the client to deploy their systems/services easily to AWS while provides flexibility and extendibility.
Although it's different from a normal CI/CD system, but you can consider one basic scenario:
When you push a commit in SCM, the system does static syntax check, build, test, and deploy.
The whole project includes 8 systems to build. Here are the requirements:
- Manage
- Create feature branch
- Maintain master
- Correlate to requirements
- Manage code review process
- For each layer in the product ontology there will be a repo.
- In each repo there are six types of artifacts: code , CFT, test, test data, config, deployment procedure.
- Integrate with any SCM.
- Detects new repos.
- New commits to the SCM are detected automatically.
- Merge to Master API
- Assess
- Assess the completeness of repo artifacts.
- Perform static code analysis.
- Capture metadata, version, master vs. branch, tags etc.
- Build
- Build for different types of deployment based on CFT
- Deploy
- Blue/Green deployment
- Delta launch and full launch
- Deploy in different account
- Multi region deployment
- Zero downtime deployment
- Pull & Push deployment
- Custom URL
- Skip deployment - feature branch vs. master
- Test
- Continuous testing
- Measurement testing
- Actionable results
- Tractability error to changes
- Notification of the Health System
- Health
- Production and test environment health
- Correlated to the product ontology
- Pipeline
- Trigger each system based on an established process
- Manage which environment to use
- Environment
- Launch and Archive environment based on a schedule
- Create an environment based on a manifesto ( system required)
- Use AWS organization
- Each of the above 8 systems provides one API.
- Communication between services should be done via API.
- Authencation should be considered.
- Database will be not shared among services.
- The whole infrastructure will be in AWS:
- The API will be deployed in AWS.
- AWS Codebuild, CodePipeline will be used for build/test/deploy in the pipeline. One example could be found in https://aws.amazon.com/quickstart/architecture/serverless-cicd-for-enterprise/
In this challenge, we will cover the first 4 systems. There will be another challenge for the rest 4 systems.
While you design the APIs, please consider all 8 systems as a whole so that you won't miss any important features.
Detailed requirements are attached in the forum.
Please don't hesitate to ask any questions in the forum, I will try to answer your doubts as soon as possible. And the client and I will meet daily to review your questions.
There is NO appeal phase in this challenge.
Scorecard Aid
Scorecard of this challenge is the Ideation scorecard, which basically is one subjective scorecard.
We’ll follow the scorecard (1-10) for this challenge. The submissions will be evaluated on the basis of
- Completeness of Swagger file with respect to the requirements
- Adherence to best practices for designing REST API
- Accuracy of the API to db mapping
- Feasibility of the solution
Final Submission Guidelines
- Submit the Open API design (4 files)
- Submit database ERD (dynamodb)
- Submit the API to database mapping document
- Submit the API and requirements mapping