Public Cloud-Based Private Python Package Serving Platform
Hassan, Muhammad (2021)
Hassan, Muhammad
2021
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-202104094494
https://urn.fi/URN:NBN:fi:amk-202104094494
Tiivistelmä
This thesis provides an overview of a solution that gives the ability to privately host a Python package distribution solution. A public Python package hosting can be implemented by a PyPi server and if there is a need for a private Python package distribution, the same PyPi server is hosted in company’s own datacenter or on public cloud with restricted access within the company’s network. To run the private package hosting on bigger scales and to meet high requests the deployment must be highly available and scalable.
This type of environment is very hard to manage and maintain and needs continuous operations to keep the virtual server up to date with patching and other necessary maintenance tasks. Some companies have high security requirements and need fine grain access controls on how one can download those privately hosted packages with request throttling and request limits. Also, those virtual machines hosting solutions need to run 27/4 even if there are no requests.
In the context of this thesis, a working, production ready serverless solution was implemented to host and serve Python packages privately on AWS public cloud using managed services in order to minimize the operations and running costs. Moreover, the solution was implemented with security features enabling package installation protected by access keys. The solution also implemented an end-to-end continuous integration and continuous deployment pipeline for upgrading packages and documentation. A deployment of the whole infrastructure as code is beyond the scope of this thesis and could be a future enhancement of this implementation.
The result of thesis shows that the serverless implementation is cost efficient and easy to scale to support millions of requests in a secure manner by using managed services provided by AWS public cloud as compared to self-hosted PyPi server on virtual machines.
This type of environment is very hard to manage and maintain and needs continuous operations to keep the virtual server up to date with patching and other necessary maintenance tasks. Some companies have high security requirements and need fine grain access controls on how one can download those privately hosted packages with request throttling and request limits. Also, those virtual machines hosting solutions need to run 27/4 even if there are no requests.
In the context of this thesis, a working, production ready serverless solution was implemented to host and serve Python packages privately on AWS public cloud using managed services in order to minimize the operations and running costs. Moreover, the solution was implemented with security features enabling package installation protected by access keys. The solution also implemented an end-to-end continuous integration and continuous deployment pipeline for upgrading packages and documentation. A deployment of the whole infrastructure as code is beyond the scope of this thesis and could be a future enhancement of this implementation.
The result of thesis shows that the serverless implementation is cost efficient and easy to scale to support millions of requests in a secure manner by using managed services provided by AWS public cloud as compared to self-hosted PyPi server on virtual machines.