Greenfield Engineering
Designing a system from scratch (top-down)
Brownfield Engineering
Designing a system using a bunch of pre-existing software (bottom-up)
What are the advantages of Brownfield Engineering?
What are the disadvantages of Brownfield Engineering?
What are the advantages of Greenfield Engineering?
What are the disadvantages of Greenfield Engineering?
Not-Invented-Here Syndrome
Tendency to avoid using software you did not create yourself because you have too much pride
What are the common fundamental software patterns?
Big Ball of Mud
Absence of any visible architecture structure
What are the problems associated with Big Ball of Mud?
The lack of structure makes change very difficult. Problems with:
- Maintainability
- Deployment
- Testability
- Scalability
- Performance
Unitary Architecture
Includes:
- Applications working on a single PC
- Mainframe systems
- Embedded systems
- Highly constrained environments
What are the different types of client/server architectures?
Layered Architecture
Separates codebase into different layers which group together modules and components with similar functionalities. Each layer has a specific role within the application.
What are the 4 layers discussed in this course?
What is the benefit of closing layers in layered architecture?
Changes made in one layer don’t impact or affect components in other layers. This allows for better coupling.
Architecture Sinkhole
An anti-pattern that occurs when all layers in a codebase using layered architecture are closed. The result is that requests move from layer to layer as simple pass-through processing. There is no business logic performed within each layer (functions are made exclusively to pass data from layer to layer)
REST Rules
Status code 2xx
Request processed successfully
Status code 3xx
Redirection (“Go away”)
Status code 4xx
Client error (“You did something wrong”)
Status code 5xx
Server error (“I did something wrong”)
Stateless REST
Every HTTP request happens in complete isolation. When the client makes an HTTP request, it includes all information necessary for the server to fulfill that request. The server should not track the client’s state
REST URI rules
GET Method
Requests a representation of a specified resource (retrieves data)