Software Architecture in Practice

Read this section to learn about the main elements, patterns, quality attributes, and principles of software architecture, including encapsulation, polymorphism, and dependencies. Pay attention to design patterns and their importance in software design.

10. Releasing Software

Deployments 

1. Configuration management to set up your servers 

2. Virtual environments that servers can be deployed to 

3. Containerization to isolate host dependencies from application dependencies


Logging 

Logging helps debug the application when something goes wrong 

Log Levels: 

- Debug - granular diagnostic information for developers 

- Info - information relevant to support sta to help gure out an error 

- Warn - there might be a problem that warrants attention 

- Error - log an error that has occurred 

- Fatal - something critical happened that you have to halt your application


Monitoring 
  • Monitor the host such as CPU utilization, memory utilization, disk availability 
  • Monitor request traffic 
  • Monitor the amount of errors 
  • Monitor response times


Maintaining Software 
  • Technical debt - prioritize to see where technical debt is and refactor 
  • Making software debuggable - low coupling and logs help debug unintended behavior