Anatoly Volkhover
The main purpose of software architecture is to reduce the cost of building and changing the software.
Anatoly Volkhover
Anatoly Volkhover
The choice of programming language isn’t obvious, and shall not be taken lightly. Consider strong static typing, support of interfaces, isomorphism, OOP vs FP capabilities, readability, third-party support, and the cost of hiring.
Anatoly Volkhover
Datastore implementation must depend on the Business Logic, and not the other way around. Ditch CRUD in favor of CQRS. Consider Event Store pattern for its flexibility.
Anatoly Volkhover
Domain-Driven Design helps you create a data model that closely follows the business concepts, and therefore is easy to evolve alongside with the business requirements. Use CQRS to keep your interfaces clean.
Anatoly Volkhover
Break your system into layers and keep them separate. Consider creating a domain-specific language (DSL) for the application layer, as a way to promote simplicity and separation. If using general-purpose language (GPL) for building the application layer, create a restrictive framework and a process to keep the application layer from intermingling with the layers below.
Break your system into layers and keep them separate. Consider creating a domain-specific language (DSL) for the application layer, as a way to promote simplicity and separation. If using general-purpose language (GPL) for building the application layer, create a restrictive framework and a process to keep the application layer from intermingling with the layers below.
Anatoly Volkhover
Apply SOLID principles to test if your architecture is compliant. Mentor your team to fully understand SOLID; those principles apply to almost everything in the software development. Refactor the code at the earliest signs of violation of any of the SOLID principles.
Anatoly Volkhover
Break your server-side processing into synchronous and asynchronous aspects. Make it easy for developers to code the asynchronous part by creating a framework. Optimize images and compress script and style assets. Use CDN for delivery of static assets. Collect telemetry to continuously monitor latency in your system.
Anatoly Volkhover
Embrace errors. Make your endpoints idempotent. Then use retries to recover.
Anatoly Volkhover
Make logs accessible from a single point. Collect logs from both client and server. Support filtering of log entries by application-specific context parameters. Alert someone to crashes. Embrace chatty log levels. Shipping of client-side logs to the server helps troubleshooting. Shipping of server-side logs to the client at dev time speeds up development.