Hi, I'm Jesus Bello. I have over 15 years of experience designing, and developing, software for small, medium, and large organizations. I've had the opportunity to deliver products from a diverse set of industries with partners who share the same passion for software engineering.
My areas of expertise are in: Software Architecture, Full Stack Development, and IAAS/PAAS/SAAS Cloud Service Providers.
One of the primary reasons for not using a serverless infrastructure is latency. If your application requires very high throughput, serverless is probably not right for you.
Generally speaking, you'll want to account for about 2 years of steady growth. If you anticipate a spike, then you may want to be a bit more conservative and aim for 3 years. However, I strongly recommend taking advantage of serverless architectures. It will help keep your costs down, and scales with your product's growth.
AWS can have a steep learning curve at first. This is especially true if you're a member of a small team and have little experience with cloud providers. However, I've discovered that getting a fundamental understanding of the following concepts can help overcome the challenges presented early on.
In order of importance:
Not all Redis clients support near-cache capabilities. You'll want to take this into consideration if you have very high performance requirements. Hazelcast, on the other hand, provides near-cache solutions for Java, .NET, C++, Python, and Node.js. Worth mentioning, Redisson is a Java Redis client that supports a near-cache strategy.
A quick glance of this Google Trends chart demonstrates that Redis is clearly the most popular option.
Another thing worth mentioning is how familiar your dev, and operations, teams are with a particular tool.