Skip to content

Latest commit

 

History

History
86 lines (72 loc) · 3.27 KB

project_checklist.rst

File metadata and controls

86 lines (72 loc) · 3.27 KB

Checklist for a Backend Project

Here is a list of things you may want to keep in mind when starting a project that involves a Python backend. I wrote much of it following the tracks of the [12 Factor App](https://12factor.net/) paradigm:

Project Communication

  • What is the business value the project generates?
  • Who is on the project team?
  • How does the team communicate (face2face, chat, email, calendar, file exchange, Wiki, JIRA)?
  • Does the team work in iterations? How long are they?
  • Is there a requirements document? Is it updated?
  • Is there a single git repository available?

Architecture

  • What are your main use cases?
  • What is your data flow?
  • Do you have a pattern for the systems overall architecture (layered, star-shaped, hexagonal etc.)
  • How many separate physical machines does the project require?
  • Does a prototype exist?
  • What are your most important non-functional requirements?
  • What legal requlations do you need to comply to (GDPR etc.)
  • Are you using containers?
  • Do you need enough containers to justify Kubernetes?
  • welche Container gibt es?
  • How does the release/deployment process look like?
  • Will there be separate test/staging servers?
  • What special security / safety risks exist?

Credentials

  • How is authentication managed?
  • What roles are defined in the project?
  • Do end users need to authenticate?
  • Which protocols for authentication do you need (SSL, OAUTH2, two-factor-auth, Kerberos etc.)
  • Is there a central authentication service?
  • Within services, are credentials stored mainly in the environment?
  • What is the procedure when a team member leaves?
  • What is the procedure when you learn that your credentials have been compromised?

Databases

  • How much data are you expecting (now and in the future)?
  • How much traffic are you expecting?
  • Is there a data model already?
  • Which database system(s) do you choose? Consider: ease of use, rigor of the data model, core features, tool support, scalability, speed.
  • How will you migrate the data when the data model changes?
  • What data import processes do you anticipate?
  • Will it be possible to re-create the entire database from scratch?
  • How are backups of the database handled?

Web Servers

  • What availability do you need?
  • Does the project expose an API?
  • Is the API going to be public?
  • Will there be a HTML front-end?
  • Will there be a mobile app?
  • Will there be a proxy server (e.g. nginx)?
  • Will the backend use an ORM?
  • Will you use pydantic models for API endpoints?
  • How will you manage requirements?
  • Which language(s) will you use for the back-end/front-end parts?
  • How will you manage versions of the software (front-end and back-end)?

Software Quality

  • How will you write automated tests for the backend?
  • How will you write automated tests for the front-end?
  • How will you write end-to-end tests covering both parts?
  • Can you run slim tests against the production server?
  • Which CI tool are you going to use?
  • What software quality gates will you apply (pyflakes, mypy)?
  • Can you autmatically check for known security issues?
  • How is logging done? How can you access logs?
  • How is monitoring done (who is messaged when something goes wrong)?
  • do you have test users?