Designing scalable microservices : Case: AWS with Python
Uotila, Timsa (2019)
Uotila, Timsa
2019
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201905139574
https://urn.fi/URN:NBN:fi:amk-201905139574
Tiivistelmä
The object of the thesis was to design and develop a prototype of a backend application used to serve data for a feed-based social media application. The requirements for the application design were to incorporate authentication, a process for storing photos, effective enough reads and writes of the feed data, as well as to retain modularity for both future scaling and testing.
One of the technical requirements was running the application on Amazon Web Services (AWS), with an emphasis on utilizing its Lambdas for serverless architecture. Other AWS resources used were S3, RDS, EC2 and SQS.
The application logic was written using Python-based frameworks. Flask was used for API and general server logic, while SQLAlchemy's engine was utilized for Object Relational Mapping on PostgreSQL databases. Marshmallow handled any serialization needed for outgoing and incoming data. Application Lambda's access to the AWS re-sources was managed by Boto3. For deployment it was necessary to have an easily integrated and lightweight deployment tool and Zappa was chosen for this task.
The result of the work was a working prototype, which supports scalability and has served as a basis for client’s application as well as in another project the designer has worked in.
One of the technical requirements was running the application on Amazon Web Services (AWS), with an emphasis on utilizing its Lambdas for serverless architecture. Other AWS resources used were S3, RDS, EC2 and SQS.
The application logic was written using Python-based frameworks. Flask was used for API and general server logic, while SQLAlchemy's engine was utilized for Object Relational Mapping on PostgreSQL databases. Marshmallow handled any serialization needed for outgoing and incoming data. Application Lambda's access to the AWS re-sources was managed by Boto3. For deployment it was necessary to have an easily integrated and lightweight deployment tool and Zappa was chosen for this task.
The result of the work was a working prototype, which supports scalability and has served as a basis for client’s application as well as in another project the designer has worked in.