Design decisions should be meticulously reviewed
Its important to realize ones gaps and seek help externally if need be. I have seen engineers work in silos, and come up with a convoluted design, where a simpler solution could have been leveraged
Improper design can lead to unscalable applications
Poor design choices early can make application very hard to troubleshoot and iterate on. Choose the right AWS compute
A misunderstanding of how AWS bills can cause large costs later on . AWS Egress
Start simple, and optimize later
Latency and optimizations can be made early on by choosing appropriate programming languages, compute products, and avoiding too many network hops. The more microservices you add, the longer it takes to debug, the more things you need to maintain, and iterating and changing directions is slower.
There is power in simplicity.
Use off-the-shelf products as much as possible. Consult an AWS expert before committing to a design (I have two AWS Certifications if you would like to connect).
Redundancy leads to high reliability
A common issue that can lead to a heavy loss in user-trust, is a full outage. When you gain the trust of a company, the last thing you want is a low reliable product. At AWS, 99% availability is constantly monitored, and so is P90 Latency. If your services’ throughput is low and your java thread pools are not tuned, then the users will start to notice the high load times and failures. Trust cannot be regained.
Use AWS Instances from multiple availability zones and multiple regions. A team can adopt a regional architecture to fail-away from problematic regions, by leveraging DNS rules and duplicating services.
Set appropriate timeouts. When a downstream service goes hard down, it can block all the threads of the upstream service. This is why we typically use timeouts. Understand the failure scenarios and what can go wrong, is very important
In summary, one year in AWS Consulting, has taught me that we AWS can be challenging to navigate due to its high complexity and large number of solutions. We all need to build a better understanding of the good products, and how we are being billed. A lot is possible with AWS, but making the right decisions early is so important.