Dear Community members,
this is my first post, and I’m thrilled by the Serverless framework already.
My question to you today is about design.
In your opinion, would it be a good practice to use lambda functions to provision other resources such as DynamoDB tables, S3 buckets etc?
For instance, I could think of a service that to run needs some other resources, like those above, and in that case, I could write a function that creates them.
Do you think it is a good way forward and that it could be easily maintained once the system grows to hundreds of resources?.
Thanks in advance for your help,
This is a matter of opinion, corporate culture and code structure/system design. If you can get away with doing red/black deployments, its ideal to have your entire ‘system’ defined as a single unit (via CloudFormation) so you can control your roll-out. If people are scared about the concept, then clearly this is problematic, but that’s not really a technical problem.
The second part is a matter of how you organize your system. Having 100’s of resources is not bad, but having 100’s of horribly organized resources is worse than horrible. So you need a good strategy for manging how you organize each micro-service and the resources that service is going to use. Not just systems like S3 or DynamoDB but also other logic that it needs to access. Properly designed this can create a dream come true scenario for a business because things can be beautifully decoupled and wonderfully stable. Badly organized with poorly understood contracts between services means that each time you deploy you are risking an entire system crash.