Minimum Viable Product Rollout with ReactJS and Serverless Architecture
Chinmay Joshi Jul 12
Recently, I joined a new organisation, Supahands!
As my first assignment, I was supposed to assess a few front-end frameworks for one of our products. It was a challenging task for me and I learned a lot through the process.
Story - For our new product, we had four frameworks in our mind. React / Vue / Angular / Ember.
After a few days of evaluation, we came to a conclusion that ReactJS is a perfect fit.
The product's goal was pretty simple to achieve. It was a simple CRUD operations app, with a few more service-calls to retrieve some data.
We already had a running product with Ruby On Rails + PostgreSQL stack.
After inspecting our objectives, we realised that we needed to adapt to better technologies and architecture.
We were trying to achieve the following things:
- Move our business logic to independent services (AWS Lambda).
- Introduce new UI design and Template System for the application.
- Write a Client-Side application in React.
- Restructure our current database and migrate to DynamoDB.
- Automate CI processes and current deployment strategies with the help of AWS CloudFormation. Our business logic is tightly-coupled with the deployment stack.
And why were we doing this?
- To minimize the cost.
- To re-use services in other products.
- To have a Client-Side single-page application.
- To maintain and share a common database with multiple applications.
And... did we achieve our targets? YES!
What did I do in the process?
- I participated in the app's UI design process. I converted those designs into JSX templates with the help of Bootstrap.
- I successfully wrote code with React for our Client-Side application (from scratch).
- I deployed our React app to AWS.
- Adapted myself to Serverless architecture. And, still learning...
- I wrote backend services in Python 3.6 for AWS Lambda.
- I designed a better structure of the database in AWS DynamoDB.
Why was it challenging?
- I was working with React and AWS for the first time.
- I had no idea how Serverless technologies work.
- I have never worked on a front-end framework on my own from scratch to go-live.
So, what's next?
- Improve the app's code base.
- Add test cases for front-end app.
- Add Redux for state management.
- Make the app mobile-friendly.
Special thanks to dev.to and the community. I have referred a lot of threads for React and Serverless development!