In the last week, I had an interview with a Cloud Solution Partner working globally and building large scale, fully automated enterprise level cloud cost optimization solutions. The firm is working with a variety of could solutions and one of their key focus is to develop serverless applications and cloud cost optimization at Enterprise Level.
You know what, their smallest client having around 80k EC2 instances running (that's insane, huge, you know and its the smallest!!! -- might be insane for me now...).
Meantime, how I was notified about the interview was interesting. As regular, I was just surfing through Linkedin and suddenly came across a Job Circular 'Senior Software Engineer - Cloud' with a very interesting challenge
Understanding of horizontal scaling, and concurrency; e.g. what would you do if you have 10k lambdas running in parallel? How would you deal with API/resource limits across various execution contexts? How can you deal with massive caching?
So that was the question and it was interesting.
Meantime, when I came across the Level 4 interview with their Director of IT solutions, I was amazed within his cooperative and exploitative attitude. I would say, it was more than an interview, it was like sharing the experiences, point of views and understanding the problem solving attitude.
Though I already had some prior information and know-how of the firm (which I used to do before sitting for any interview and prepare accordingly).
The session started with a highlight on what the firm is currently looking for, their approach towards cloud solutions, the architecture they are building, owning to the firm (with less micro management) and opportunity to contribute.
The session and questions were mostly on AWS Lambda, as this is the key role the person in the Sr.Software Engineering position would perform daily.
having the focus on cost, cache and concurrency (horizontal scaling). Person in the position should have a very good understanding of Python, that's what the company want (Developing AWS lambda using Python), CloudFormation as IaC, Docker for Containerization etc.
For the NDA issue, I am not going to disclose my interview questions and much details. Rather, I have written a series of Blog to Deep Drive into the Serverless-AWS-Lambda details here in My Blog on AWS Lambda.
In this series of blog I am going to share my own experiences how would we solve the problem mentioned above: concurrency and massive cache. My blogs in this series has addressed the following issues:
- ServerlessArchitecture#01- Lets Start With Me .. JaRotBall
- ServerlessArchitecture#02 Serverless vs Microservices Architecture
- ServerlessArchitecture#03 AWS Lambda, Lambda Execution Environment, Anatomy of a Lambda Function and Invocation Methods
- ServerlessArchitecture#04 AWS Lambda Cold Starts#PART-1 When it Occurs and Strategies to Optimize
- ServerlessArchitecture#04 AWS Lambda Cold Starts#PART-2 Keeping Connections Alive in WAY Different
- ServerlessArchitecture#04 AWS Lambda Cold Starts#PART-3 Just the First Request
- ServerlessArchitecture#04 AWS Lambda Cold Starts#PART-4 How long does AWS Lambda keep your idle functions around before a cold start?
- ServerlessArchitecture#04 AWS Lambda Cold Starts#PART-5 Lets See Why Your Lambda Throttled
- ServerlessArchitecture#05 - Various Scenarios in which timeouts can lead to BAD User Experiences
- ServerlessArchitecture#06 Caching for Serverless Applications
- ServerlessArchitecture#07 - Leveraging Lambda Cache for Serverless Cost-Efficiency : An alternative to external caches such as Redis or Memcache