Migrating Kabuter.io from monolith to AWS server-less micro-services architecture

High-level migration plan:

  1. Re-develop kabuter UI using Angular 8 and Amplify

    Created an kabuter.io angular 8 project by referring Michael Labieniec’s blog on Progressive Web Application

Follow amazon multi-environments doc for setting up prod, test and dev environments.

  1. Use AWS Cognito for user-management and social federation (facebook and google)

    Implemented social federation using AWS Cognito by referring Michael Labieniec’s blog on PWA Social Federation

    Note: I had to use Cognito – implicit grant option to eliminate token url resulting in invalid_request error that prevented social federated users to get navigated to home page after successful login. Refer AWS Token link for more.

  2. Use AWS DynamoDB as a backend no-sql database

    Created a DynamoDB table named kabuterio with partition-key=pk, sort-key=sk.
    Implemented a python lambda invoked by AWS Cognito pre-Sign-up trigger to write user info to kabuterio table.

  3. MILESTONE #1 Use AWS Cognito to trigger a Python lambda to save pre sign-up user info in the kabuterio DynamoDB database.

    Created user-add, user-get python lambda functions to write to kabuterio table.

    Note: Make sure to return event from lambda functions so that Cognito can return back to the caller webapp.

  4. Use Swagger to define REST API

  5. MILESTONE #2: Upon successful sign-up and authentication, allow users to update profile/preference info.

  6. Use AWS CodeCommit

    Created a repository “KabuterAngularApp” in AWSCodeCommit.
    Pointed the local directory of angular app to remote AWS repository using the command below:

    git remote add  
    

    Validate the remote url:

    git remote -v

    Pushed local code to remote using:

    git push  

    For more info refer Linuxize blog How to add git remote

  7. Import Swagger definition into SOAP UI to run API tests

  8. MILESTONE #3: Implement code-change to code-deployment cycle using AWS Bamboo

  9. Implement Group, Event, and Message CRUD UI and REST functionality

  10. MILESTONE #4: Kabuter.io is up and running on AWS platform and users are able to create groups, events and messages.

  11. Implement workflow using AWS State Machine.

  12. MILESTONE #5: Kabuter.io is able to send email and SMS notifications

  13. Update ios and android apps

  14. MILESTONE #6: Kabuter.io is fully functional on AWS. 

References

A blog by Mark McDonell on AWS Cognito 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s