Git Product home page Git Product logo

richardhowellpeak.com-design's Introduction

Design

This repo is to house all the designs

Infrastructure Overview

This document is to gather my thoughts on how to deploy scalable and secure full-stack web applications using open-source technologies.

Local Development Environment

IDE plus linting, automation etc.

Trends

You need processes to learn about and keep up with new developments in technology or tools.

Also beware of using experimental or unstable products that may seem cool and appear to solve lots of problems, only to create more problems due to unstable APIs or pivots in the organisation behind the technology.

Renting Hardware

The use of terraform for managing actual hard-ware is critical.

Leveraging managed and hosted cloud services instead of self-hosting is also critical.

For test development however, docker-compose run locally would suffice.

DNS

Managing DNS records, SSL certs etc. etc. is also a requirement. This should all be automated.

Automated CI

The CI pipe must be automated, which means services must have an easy and automated way of running tests (including unit tests, api tests, end-to-end tests and load-tests).

This also includes linting and any other code standards.

Then deployments must be automated, which necessitates the use of docker and kubernetes.

Docker

All services, front and back end, must be dockerised so they can be deployed onto kubernetes.

Kubernetes

This is a platform that allows for automated deployments.

It can do secret management, autoscaling etc.

Error Handling

A good strategy for error handling must be designed up-front.

Logging, metrics and tracing

In order to easily debug services, there must be centralised logging, metrics and tracing. Metrics are also used to manage auto-scaling.

You also need a simple GUI for managing and searching through logs.

Kafka

In a lot of cases, communication between services should be done via Kafka.

Hashicorp Vault

I think the hashicorp vault is useful for lots of situations.

Storage, Caching and Application Architecture

You then also have to figure out how you are going to store data, in which type of storage (postgres, mongo etc.) and how you are going to manage that within your application.

This all then comes down to the application architecture and the requirements of the project.

Project Management

Use of Gherkin specs, cards, defect management, ADR, MR etc.

You also need established and enforced software development processes.

Version control and release notes

Migrations, roll-outs

VPN

Security for development

The Application

Only once all these pieces of the puzzle are solved, are you ready to start building your application.

Whatever technology you use for this, it makes sense to use the same language for front and back end. So WASM for any non typescript based projects would seem a good option.

These services must then be dockerised, tested then deployed.

richardhowellpeak.com-design's People

Contributors

richardhp avatar

Watchers

 avatar

richardhowellpeak.com-design's Issues

Foundation: Test Management

Foundation - Test Management

What is needed is a way to run tests that give an overview of what Features (not Foundations) are complete and working, and if they are not which Scenarios are failing

User Problems

  1. Detect regression errors in the behavioural requirements
  2. Automate as much of it as possible
  3. Produce reports that show a summary of compliance with the spec plus easy to drill down into the parts that are failing
  4. Track progress of the project
  5. Run analytics on regression errors, showing which features are the most unstable

User Stories

  1. A developer creates a merge request for their completed feature branch
  2. The entire end-to-end test suite is run
  3. Any manual tests are performed
  4. A report is generated showing the breakdown of failing scenarios by feature
  5. The bottom section of the report also shows which scenarios have failed most often

Scenarios

Include links here to the scenarios for this feature. Scenarios should be a full behavioural specification of the feature

Architectural Designs

If appropriate, include any links to architectural designs here, or mermaid / uml diagrams etc

Foundation: Unit Testing

Foundation - Unit Testing

Each part of the code should be unit tested where appropriate

User Problems

  1. Unit tests need to be designed along with the feature
  2. Unit tests need to run in a reasonable amount of time
  3. Unit tests need to trigger either fail or pass in the CI pipeline

User Stories

  1. A user designs a new feature, along with a unit testing strategy
  2. As the code is written, they write unit tests to validate pure function behaviour
  3. As the code is pushed to GitHub, the unit tests run as part of the CI pipeline and block any failing code being merged into the master branch

Scenarios

Include links here to the scenarios for this feature. Scenarios should be a full behavioural specification of the feature

Graphic Designs

If appropriate, include any links to graphic designs here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.