Category Archives for Become an Awesome Software Architect, Book 1: Foundation 2019

Chapter 10: Real-Time Processing and Event Streaming

  • October 12, 2019

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.

Chapter 11: CDN

  • October 12, 2019

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.

Chapter 12: User Interfaces

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.

Chapter 13: Microservices

  • October 12, 2019

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.

Chapter 14: API

  • October 12, 2019

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.

Chapter 15: Batch

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.

Chapter 16: Multi-Tenancy

  • October 12, 2019

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.

Chapter 17: Unblock Coding and Testing

  • October 12, 2019

Anatoly Volkhover

Create emulators alongside with interfaces. Embrace the test-first approach to development. See the light.

Chapter 18: Runtime Infrastructure

  • October 12, 2019

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).

Chapter 19: Runtime Frameworks

  • October 11, 2019

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.

>