{ "info": { "author": "Daniel Bardsley", "author_email": "daniel@bardsley.org.uk", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7" ], "description": "# LambdaBase\r\n\r\n#### A library to support development of enterprise Serverless applications.\r\n\r\nServerless computing allows you to build and run applications without expending time and \r\neffort managing a server. Code is executed and billed only when called. Whilst this model \r\nprovides many advantages such as horizontal scalability and reduced operational costs \r\nit creates it's own set of drawbacks such as debugging, testing and packaging.\r\n\r\nThere are numerous articles detailing the advantages and disadvantages of serverless \r\narchitectures. It's worth considering all the salient points before starting down the \r\nserverless path however, in general, the zero configuration horizontal scalability \r\nand cost efficiencies are the most significant driving factors. The architecture \r\ndescribed here helps to mitigate the disadvantages whilst magnifying the advantages.\r\n\r\nAs with any architecture there is no one size fits all solution, however, I've seen the \r\nfollowing pattern implemented successfully in both Java and Python across multiple domains. \r\nI believe it provides a reasonable amount of flexibility whilst being sufficiently structured \r\nto help developers rapidly implement clean code. One of the guiding principles of this \r\npattern is to overcome one of the most significant issues with Serverless - the difficulty \r\nof debugging and testing Serverless ready code in a local environment. \r\n\r\nThe key design points and the basis for this architecture are as follows:\r\n\r\n* Lambdas are grouped into functional areas. Each group contains multiple lambdas with \r\ndifferent handlers for each function. This is to allow related lambdas to share common \r\node more easily and to simplify packaging and application structure.\r\n* It should always be possible to execute and debug the lambda code locally.\r\n* The configuration for each environment is packaged with each lambda. Which \r\nconfiguration file to use is specified by an environment variable which is specified \r\nat deployment time.\r\n* The code to package and deploy each of the lambdas lives with the runtime code\r\n* One click deployment to new environments should be trivial, and the concept of \r\ninfrastructure as code should be maintained at all times.\r\n* Dependency injection is used to allow alternative services to be injected into lambdas \r\ndepending on where they are running.\r\n\r\nThe proposed architecture is designed to fulfill these high level goals whilst maintaining \r\na flexibility which should allow future extension and resilience to changing project requirements.\r\n\r\nPush to PyPi: \r\n\r\npython setup.py bdist_wheel\r\npython -m twine upload lambdabase-0.x-py2-none-any.whl\r\n\r\n\r\n\r\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/danielbardsley/lambdabase", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "lambdabase", "package_url": "https://pypi.org/project/lambdabase/", "platform": "", "project_url": "https://pypi.org/project/lambdabase/", "project_urls": { "Homepage": "https://bitbucket.org/danielbardsley/lambdabase" }, "release_url": "https://pypi.org/project/lambdabase/0.7/", "requires_dist": null, "requires_python": "", "summary": "", "version": "0.7" }, "last_serial": 4970628, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "8901c6ba74a63e46f1aff8b5a66b814e", "sha256": "9bd27ecd59f55d666fddd32acfbcf11262f49c714f055b3cc92b02453eb4621e" }, "downloads": -1, "filename": "lambdabase-0.5.tar.gz", "has_sig": false, "md5_digest": "8901c6ba74a63e46f1aff8b5a66b814e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15902, "upload_time": "2019-03-14T00:04:21", "url": "https://files.pythonhosted.org/packages/57/0f/f1072edecbdab137dd14b43650c6b99530d63d3a0d5c4b9479d3d1457033/lambdabase-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "dcb765439923f7b3a9d0133238310f40", "sha256": "cb629ab5b8a6b022e436536cba1f0f1a1bdda596d370a2fc6f1f319f7f490a0d" }, "downloads": -1, "filename": "lambdabase-0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "dcb765439923f7b3a9d0133238310f40", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 25477, "upload_time": "2019-03-16T17:03:30", "url": "https://files.pythonhosted.org/packages/93/f5/e10e72f7fd5983b5bde825c302675eca579f27f6ed69c5f6db90233c77cc/lambdabase-0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5d78d73c9a9d99a29324e5daec36514", "sha256": "dc628dcc47194a9193ea4976e8f05959b0242896cc84fd64eea5e50a8f58a9d2" }, "downloads": -1, "filename": "lambdabase-0.6.tar.gz", "has_sig": false, "md5_digest": "f5d78d73c9a9d99a29324e5daec36514", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15481, "upload_time": "2019-03-16T17:03:32", "url": "https://files.pythonhosted.org/packages/9c/16/d67922e73c85acf6ce9be0957dc09ae7cee84c98d3bb7e1b252ce41eafcf/lambdabase-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "b6b8db6c606121f61bf1173a275e5637", "sha256": "7c069dd57a25556e1d08d4422636ca7ee2fc068c93551e2238d064fc9c2303b6" }, "downloads": -1, "filename": "lambdabase-0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "b6b8db6c606121f61bf1173a275e5637", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 25470, "upload_time": "2019-03-22T00:38:01", "url": "https://files.pythonhosted.org/packages/a0/22/7f08fe53b662cb7fa5155eef4a93959baada143ecb21b454c698a62fb1d3/lambdabase-0.7-py2-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b6b8db6c606121f61bf1173a275e5637", "sha256": "7c069dd57a25556e1d08d4422636ca7ee2fc068c93551e2238d064fc9c2303b6" }, "downloads": -1, "filename": "lambdabase-0.7-py2-none-any.whl", "has_sig": false, "md5_digest": "b6b8db6c606121f61bf1173a275e5637", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 25470, "upload_time": "2019-03-22T00:38:01", "url": "https://files.pythonhosted.org/packages/a0/22/7f08fe53b662cb7fa5155eef4a93959baada143ecb21b454c698a62fb1d3/lambdabase-0.7-py2-none-any.whl" } ] }