Anatoly Volkhover
There is almost always a place for event streaming as a part of your overall architecture, even if you are not building a real-time system. Streaming frameworks scale well through partitioning. Make stream processing logic idempotent to allow safe retries. Create means for monitoring and scaling of both streams and consumers.
Anatoly Volkhover
Always use CDN for delivery of static resources. Never reset the cache. Use cache busters to push changes through the CDN without a reset.
Anatoly Volkhover
User Interface must be properly architected, and under no circumstances can be left to sprout organically without governance. You can maximize code reuse across web and mobile apps by using Apache Cordova. There is a better UI code composition pattern than MVC. Consider programmable skinning instead of shared CSS. Mobile vs desktop differences go beyond screen sizes, and may require different user flows.
Anatoly Volkhover
Microservices could be dangerous, and their benefits are arguable. If you are inexperienced with microservices, stay away. If you do microservices across multiple programming languages, use IDL to keep all APIs in sync.
Anatoly Volkhover
REST is rarely required in real world. Follow the pattern of API construction explained by example in this chapter. Consider providing your API’s customers an SDK. Keep your API secure. Try to resist GraphQL’s charms.
Anatoly Volkhover
Avoid batch processing whenever you can. Offload as much work as possible through event streaming. Consider the possibility of scaling through a concurrent execution of multiple batch instances. Invest in error recovery. Closely monitor batch execution time. Create telemetry feeds.
Anatoly Volkhover
Consider making your architecture multi-tenant, even if you see no immediate application for it. Multi-tenancy goes beyond customer-facing features, all the way to third party vendors and the internal operations.
Anatoly Volkhover
Create emulators alongside with interfaces. Embrace the test-first approach to development. See the light.
Anatoly Volkhover
The choice of your hosting model, or the ability to move between select models, is one of the most pivotal architectural decisions where it comes to scalability and operating costs. The costs are not limited to the hardware and services but also include the labor to deploy and maintain the system. The simplicity of delivering code to your infrastructure also affects stability of your software releases and your readiness for Continuous Integration and Continuous Delivery (CI/CD).
Anatoly Volkhover
Don’t make your architecture choices dependent on a framework. Frameworks must significantly simplify and accelerate coding. Do not allow frameworks to penetrate your code base.