├── Resources ├── Scripts │ ├── __init__.py │ ├── github_access_token.py │ └── fetch_github_stars_for_all_repos.py └── Images │ ├── pandect.png │ ├── podcasts.png │ ├── security.png │ ├── deployment.png │ ├── other_topics.png │ ├── serverless.png │ ├── infra_as_code.png │ ├── observability.png │ ├── cost_optimization.png │ ├── reading_section.png │ ├── youtube_channels.png │ ├── learning_resources.png │ └── stateful_workloads.png ├── .gitignore ├── LICENSE └── README.md /Resources/Scripts/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Resources/Scripts/github_access_token.py: -------------------------------------------------------------------------------- 1 | github_access_token = "" -------------------------------------------------------------------------------- /Resources/Images/pandect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/pandect.png -------------------------------------------------------------------------------- /Resources/Images/podcasts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/podcasts.png -------------------------------------------------------------------------------- /Resources/Images/security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/security.png -------------------------------------------------------------------------------- /Resources/Images/deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/deployment.png -------------------------------------------------------------------------------- /Resources/Images/other_topics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/other_topics.png -------------------------------------------------------------------------------- /Resources/Images/serverless.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/serverless.png -------------------------------------------------------------------------------- /Resources/Images/infra_as_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/infra_as_code.png -------------------------------------------------------------------------------- /Resources/Images/observability.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/observability.png -------------------------------------------------------------------------------- /Resources/Images/cost_optimization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/cost_optimization.png -------------------------------------------------------------------------------- /Resources/Images/reading_section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/reading_section.png -------------------------------------------------------------------------------- /Resources/Images/youtube_channels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/youtube_channels.png -------------------------------------------------------------------------------- /Resources/Images/learning_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/learning_resources.png -------------------------------------------------------------------------------- /Resources/Images/stateful_workloads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-bilan/The-Microservices-Pandect/HEAD/Resources/Images/stateful_workloads.png -------------------------------------------------------------------------------- /Resources/Scripts/fetch_github_stars_for_all_repos.py: -------------------------------------------------------------------------------- 1 | """ 2 | This script will parse all GitHub repositories present in the README.md, update the number of stars for each, and 3 | regenerate the README.md with the updated star count. All you need is a GitHub API token that you can generate in your 4 | GitHub profile settings. 5 | """ 6 | 7 | import re 8 | import requests 9 | 10 | from github_access_token import github_access_token 11 | 12 | with open("../../README.md", encoding="utf8") as f: 13 | lines = f.readlines() 14 | 15 | for i, line in enumerate(lines): 16 | if "github.com" in line: 17 | try: 18 | username, project_name = re.search(r".*?github.com/(.*?)/(.*?)\).*?", line).groups() 19 | project_name = project_name.split("/")[0] 20 | 21 | query_url = "https://api.github.com/repos/{}/{}/".format(username, project_name).strip("/") 22 | params = { 23 | "state": "open", 24 | } 25 | headers = {'Authorization': 'token {}'.format(github_access_token)} 26 | r = requests.get(query_url, headers=headers, params=params) 27 | number_of_stars = r.json()["stargazers_count"] 28 | line = re.sub(r"(?is)GitHub,? .*? ?stars", "GitHub, {} stars".format(number_of_stars), line) 29 | lines[i] = line 30 | except AttributeError: 31 | pass 32 | 33 | with open('README.md', 'a', encoding="utf8") as f: 34 | for item in lines: 35 | f.write(item) 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 98 | __pypackages__/ 99 | 100 | # Celery stuff 101 | celerybeat-schedule 102 | celerybeat.pid 103 | 104 | # SageMath parsed files 105 | *.sage.py 106 | 107 | # Environments 108 | .env 109 | .venv 110 | env/ 111 | venv/ 112 | ENV/ 113 | env.bak/ 114 | venv.bak/ 115 | 116 | # Spyder project settings 117 | .spyderproject 118 | .spyproject 119 | 120 | # Rope project settings 121 | .ropeproject 122 | 123 | # mkdocs documentation 124 | /site 125 | 126 | # mypy 127 | .mypy_cache/ 128 | .dmypy.json 129 | dmypy.json 130 | 131 | # Pyre type checker 132 | .pyre/ 133 | 134 | # pytype static type analyzer 135 | .pytype/ 136 | 137 | # Cython debug symbols 138 | cython_debug/ 139 | 140 | # don't commit github access token file 141 | Resources/Scripts/github_access_token.py 142 | Resources/Scripts/README.md 143 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![The-Microservices-Pandect](./Resources/Images/pandect.png) 2 | 3 |

4 | This pandect (πανδέκτης is Ancient Greek for encyclopedia) was created to help you find and understand almost anything related to Microservices that is available online. 5 |

6 | 7 | > __Note__ 8 | > Quick legend on available resource types: 9 | > 10 | > ⭐ - GitHub repository with the number of stars 11 | > 12 | > 📙 - resource you can read, usually a blog post or a paper 13 | > 14 | > 🗂️ - a collection of additional resources 15 | > 16 | > 🔱 - non-open source tool, framework or paid service 17 | > 18 | > 🎥️ - a resource you can watch 19 | > 20 | > 🎙️ - a resource you can listen to 21 | 22 | ###

Table of Contents

23 | 24 | | 📇 Main Section | 🗃️ Sub-sections Sample | 25 | | ------------- | ------------- | 26 | | [Essential Reading](https://github.com/ivan-bilan/The-Microservices-Pandect#) | [General Resources](https://github.com/ivan-bilan/The-Microservices-Pandect#general-resources), [Platforms](https://github.com/ivan-bilan/The-Microservices-Pandect#platforms) | 27 | | [Podcasts](https://github.com/ivan-bilan/The-Microservices-Pandect#-1) | - | 28 | | [YouTube Channels](https://github.com/ivan-bilan/The-Microservices-Pandect#-2) | - | 29 | | [Observability](https://github.com/ivan-bilan/The-Microservices-Pandect#-3) | [Alerting](https://github.com/ivan-bilan/The-Microservices-Pandect#alerting), [Visualizing](https://github.com/ivan-bilan/The-Microservices-Pandect#visualizing) | 30 | | [Deployment](https://github.com/ivan-bilan/The-Microservices-Pandect#-4) | [General Tools](https://github.com/ivan-bilan/The-Microservices-Pandect#general-deployment-tools), [CI/CD](https://github.com/ivan-bilan/The-Microservices-Pandect#cicd) | 31 | | [Cost Optimization](https://github.com/ivan-bilan/The-Microservices-Pandect#-5) | - | 32 | | [Stateful Workloads](https://github.com/ivan-bilan/The-Microservices-Pandect#-6) | - | 33 | | [Serverless](https://github.com/ivan-bilan/The-Microservices-Pandect#-7) | [Tools and Frameworks](https://github.com/ivan-bilan/The-Microservices-Pandect#tools--frameworks) | 34 | | [Security](https://github.com/ivan-bilan/The-Microservices-Pandect#-8) | - | 35 | | [Learning Resources](https://github.com/ivan-bilan/The-Microservices-Pandect#-9) | [Kubernetes](https://github.com/ivan-bilan/The-Microservices-Pandect#kubernetes), [DevOps](https://github.com/ivan-bilan/The-Microservices-Pandect#devops) | 36 | | [Infrastructure as Code](https://github.com/ivan-bilan/The-Microservices-Pandect#-10) | - | 37 | | [Other Topics](https://github.com/ivan-bilan/The-Microservices-Pandect#-11) | [Streaming](https://github.com/ivan-bilan/The-Microservices-Pandect#streaming-frameworks--engines), [Testing](https://github.com/ivan-bilan/The-Microservices-Pandect#testing) | 38 | 39 | ![Essential-Reading](./Resources/Images/reading_section.png) 40 | ----- 41 | #### General Resources 42 | * 📙 [Microservices (Martin Fawler & James Lewis)](https://martinfowler.com/articles/microservices.html) [Blog, March 2014] 43 | * 📙 [What are Microservices?](https://microservices.io/index.html) - Chris Richardson, Author of ["Microservices Patterns"](https://microservices.io/book) 44 | * 📙 [The Architecture Behind A One-Person Tech Startup](https://anthonynsimon.com/blog/one-man-saas-architecture/) [Blog, April 2021] 45 | * 📙 [Fallacies of Distributed Systems](https://architecturenotes.co/fallacies-of-distributed-systems/) [Blog, June 2022] 46 | 47 | #### Platforms 48 | * 🔱 [AWS](https://aws.amazon.com/) - Amazon Web Services on-demand cloud computing platform 49 | * 🔱 [Azure](https://azure.microsoft.com/en-us/) - cloud computing service created by Microsoft 50 | * 🔱 [Google Cloud Platform - GCP](https://cloud.google.com/) - suite of cloud computing services from Google 51 | * 🔱 [OpenStack](https://www.openstack.org/) - free, open standard cloud computing platform 52 | * 🔱 [Digital Ocean](https://www.digitalocean.com/) - DigitalOcean provides developers with cloud services 53 | * 🔱 [Linode](https://www.linode.com/) - cloud hosting company that provides virtual private servers 54 | * 🔱 [Okteto](https://okteto.com/) - tool to develop applications on Kubernetes 55 | 56 | #### Stories from the Industry 57 | * 📙 [Kubernetes Failure Stories](https://k8s.af/) 58 | * ⭐ [How they AWS](https://github.com/upgundecha/howtheyaws) - curated collection of resources on how organizations use AWS [GitHub, 574 stars] 59 | * 🎥️ [This is My Architecture](https://aws.amazon.com/architecture/this-is-my-architecture/) - Innovative cloud architectures from AWS partners and customers [Video Series, AWS] 60 | 61 | #### Compilations & Resource Collections 62 | * 🗂 [Cloud Native Computing Foundation - CNCF](https://www.cncf.io/projects/) - list of graduated and incubating projects 63 | * 🗂 [Everything AWS](https://app.polymersearch.com/discover/aws) - GitHub search and catalogue of AWS-related repositories 64 | 65 | #### Roadmaps 66 | * ⭐ [Containers Roadmap](https://github.com/aws/containers-roadmap) - public roadmap for AWS container services [GitHub, 4684 stars] 67 | 68 | #### From the Monolith to Microservices 69 | * 📙 [Monolithic to Microservices](https://medium.com/geekculture/monolithic-to-microservices-ce043a3be80c) [Blog, June 2021] 70 | 71 | #### Project Examples 72 | * ⭐ [CNCF Projects App](https://github.com/Azure/cloud-native-app) - project example created with only CNCF graduated projects [GitHub, 143 stars] 73 | 74 | ![Podcasts](./Resources/Images/podcasts.png) 75 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 76 | 77 | ----- 78 | * 🎙️ [Cloudcast](https://www.thecloudcast.net) - independent Cloud Computing podcast [Years: 2011 - now, Status: active] 79 | * 🎙️ [PodCTL](https://podcasts.apple.com/us/podcast/podctl-enterprise-kubernetes/id1270983443m) - podcast focused on Cloud-native applications (by Red Hat) [Years: 2017 - now, Status: active] 80 | * 🎙️ [Kubernetes Podcast](https://kubernetespodcast.com) - Kubernetes Podcast from Google [Years: 2018 - now, Status: active] 81 | * 🎙️ [Data Engineering Podcast](https://www.dataengineeringpodcast.com) - Data management, microservices, ETL and more [Years: 2017 - now, Status: active] 82 | * 🎙️ [The Secure Developer](https://www.devseccon.com/the-secure-developer-podcast/) - A podcast about security for developers [Years: 2017 - now, Status: active] 83 | * 🎙️ [APIs you won't hate](https://apisyouwonthate.com/podcast/) - podcast about building and designing APIs [Years: 2019 - now, Status: active] 84 | 85 | ![Youtube-Channels](./Resources/Images/youtube_channels.png) 86 | ----- 87 | * 🎥 [Continuous Delivery](https://www.youtube.com/channel/UCCfqyGl3nq_V0bo64CjZh8g) - Continuous Delivery Pipelines and Processes [Youtube, 57k Subscribers] 88 | * 🎥 [CNCF - Cloud Native Computing Foundation](https://www.youtube.com/channel/UCvqbFHwN-nwalWPjPUKpvTA) - provides educational and informative content on cloud native computing [Youtube, 65k Subscribers] 89 | * 🎥 [Snyk](https://www.youtube.com/c/Snyksec/videos) - build cloud native applications securely [Youtube, 2k Subscribers] 90 | * 🎥 [CloudBeesTV](https://www.youtube.com/channel/UCKlF3GIFy9KVUefVbycx_vw) - cloud conferences from the end-to-end automated software delivery company [Youtube, 9k Subscribers] 91 | * 🎥 [Containers from the Couch](https://www.youtube.com/channel/UCYg157Qy_U7ZR1WUHTq0Q8Q) - learning resources on Container Services [Youtube, 4k Subscribers] 92 | * 🎥 [GOTO Conferences](https://www.youtube.com/channel/UCs_tLP3AiwYKwdUHpltJPuA) - GOTO is a software development content and events platform [Youtube, 230k Subscribers] 93 | 94 | 95 | ![Observability](./Resources/Images/observability.png) 96 | ----- 97 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 98 | 99 | #### General Monitoring 100 | * ⭐ [Prometheus](https://prometheus.io) - open-source systems monitoring and alerting toolkit 101 | * ⭐ [Prometheus Federation](https://prometheus.io/docs/prometheus/latest/federation/) 102 | * ⭐ [kubewatch](https://github.com/bitnami-labs/kubewatch) - Watch k8s events and trigger Handlers [GitHub, 2416 stars] 103 | * ⭐ [cortex](https://github.com/cortexproject/cortex) - multi-tenant, long term Prometheus [GitHub, 4910 stars] 104 | 105 | #### Error Monitoring 106 | * 🔱 [Sentry](https://sentry.io/) 107 | 108 | #### Alerting 109 | * ⭐ [Prometheus AlertManager](https://prometheus.io/docs/alerting/latest/alertmanager/) 110 | * ⭐ [StreamAlert](https://github.com/airbnb/streamalert) - serverless, real-time data analysis framework for alerting [GitHub, 2732 stars] 111 | 112 | #### Logging 113 | * ⭐ [loki](https://github.com/grafana/loki) - horizontally-scalable, highly-available, multi-tenant log aggregation system [GitHub, 17580 stars] 114 | 115 | #### Visualizing 116 | * ⭐ [grafana](https://github.com/grafana/grafana) - observability and data visualization platform [GitHub, 52288 stars] 117 | 118 | 119 | ![Deployment](./Resources/Images/deployment.png) 120 | ----- 121 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 122 | 123 | #### General Deployment Tools 124 | * ⭐ [kubespray](https://github.com/kubernetes-sigs/kubespray) - Deploy a Production Ready Kubernetes Cluster [GitHub, 13125 stars] 125 | 126 | #### Zero Downtime Deploys 127 | There are industry proven strategies to make sure your deploys don't cause any downtime. 128 | 129 | * 𝐁𝐥𝐮𝐞/𝐆𝐫𝐞𝐞𝐧 𝐃𝐞𝐩𝐥𝐨𝐲𝐬 - deploy your change to a subset of nodes and redirect some traffic to them, while still using the old version for the remaining traffic. Once you have 130 | validated that the traffic to the new nodes is correct, take out the nodes with the old version and redirect all of your requests to new nodes. Power down nodes with the old 131 | version. 132 | * 𝐑𝐞𝐝/𝐁𝐥𝐚𝐜𝐤 𝐃𝐞𝐩𝐥𝐨𝐲𝐬 - similar to the above with one distinct difference: you direct all of your traffic to the new nodes, old nodes are kept alive just in case but don't 133 | receive any requests. After validation, they are removed. 134 | * 𝐂𝐚𝐧𝐚𝐫𝐲 𝐃𝐞𝐩𝐥𝐨𝐲𝐬 - in this deployment strategy, you release a new version of your microservice or ML model to a defined subset of users (i.e. 25%) and keep it alive for a 135 | prolonged time to make sure everything works as expected. You could technically use this also for A/B testing of your new version. 136 | * 𝐑𝐨𝐥𝐥𝐢𝐧𝐠 𝐃𝐞𝐩𝐥𝐨𝐲𝐬 - the simplest option, release your new version of the microservice incrementally node by node or in batches. It's slow, but easy to revert back if needed. 137 | 138 | ##### General 139 | * 📙 [Intro to Deployment Strategies: Blue-Green, Canary, and More](https://harness.io/blog/continuous-verification/blue-green-canary-deployment-strategies/) [Blog, January 2021] 140 | * 📙 [Zero-downtime Blue Green Deployments for Microservices](https://medium.com/@dantwining_26268/zero-downtime-blue-green-deployments-for-microservices-7896558623b2) [Blog, August 2020] 141 | * 📙 [Breaking down zero downtime deployments in Kubernetes](https://deepsource.io/blog/zero-downtime-deployment/) [Blog, August 2020] 142 | ##### Tools: 143 | * ⭐ [flagger](https://github.com/fluxcd/flagger) - Canary, A/B Testing and Blue/Green deployments for Kubernetes [GitHub, 3943 stars] 144 | 145 | #### CI/CD 146 | ##### General 147 | * 🔱 [Tekton](https://tekton.dev/) - open-source framework for creating CI/CD systems 148 | 149 | ##### GitOps: 150 | * ⭐ [flux](https://github.com/fluxcd/flux) - The GitOps Kubernetes operator [GitHub, 6951 stars] 151 | * 🔱 [ArgoCD](https://argoproj.github.io/argo-cd/) - A declarative, GitOps continuous delivery tool for Kubernetes 152 | 153 | 154 | ![Cost-Optimization](./Resources/Images/cost_optimization.png) 155 | ----- 156 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 157 | 158 | ##### General 159 | * 📙 [The Cost of Cloud, a Trillion Dollar Paradox](https://a16z.com/2021/05/27/cost-of-cloud-paradox-market-cap-cloud-lifecycle-scale-growth-repatriation-optimization/) [Blog, May 2021] 160 | 161 | ##### AWS 162 | * 🔱 [Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html) [AWS Services] 163 | * ⭐ [AutoSpotting](https://github.com/AutoSpotting/AutoSpotting) - open source spot market automation tool for EC2 [GitHub, 2115 stars] 164 | 165 | ##### Autoscaling 166 | * ⭐ [keda](https://github.com/kedacore/keda) - Kubernetes-based Event Driven Autoscaling [GitHub, 5648 stars] 167 | 168 | ##### General Tools 169 | * ⭐ [Komiser](https://github.com/mlabouardy/komiser) - Multi-cloud environment inspector for costs and security [GitHub, 2866 stars] 170 | * ⭐ [Infracost](https://github.com/infracost/infracost) - Cloud cost estimates for Terraform in your CLI and pull requests [GitHub, 8185 stars] 171 | 172 | 173 | ![Stateful-Workloads](./Resources/Images/stateful_workloads.png) 174 | ----- 175 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 176 | 177 | #### Databases and Operators 178 | 179 | ##### General 180 | * 🗂 [OperatorHub.io](https://operatorhub.io/) - OperatorHub.io is a resource for the Kubernetes community to find and share Operators 181 | 182 | ##### In-memory 183 | * ⭐ [redis](https://redis.io) - Redis is an open source, in-memory data structure store 184 | 185 | ##### MySQL 186 | * 🔱 [MariaDB](https://mariadb.org/) - MariaDB Server: The open source relational database 187 | * ⭐ [vitess](https://github.com/fluxcd/flagger) - Canary, A/B Testing and Blue/Green deployments for Kubernetes [GitHub, 3943 stars] 188 | 189 | ##### PostgreSQL 190 | * ⭐ [CrunchyData Operator](https://github.com/CrunchyData/postgres-operator) [GitHub, 3023 stars] 191 | * ⭐ [Zalando Operator](https://github.com/zalando/postgres-operator) [GitHub, 2907 stars] 192 | * 🔱 [Amazon Aurora](https://aws.amazon.com/rds/aurora/) [AWS, Paid Service] 193 | 194 | ##### OLAP - Online Analytical Processing 195 | * 📙 [What is OLAP? Cube, Operations & Types in Data Warehouse](https://www.guru99.com/online-analytical-processing.html) [Blog, Feb 2018] 196 | * 📙 [Comparison of ClickHouse, Druid, and Pinot](https://leventov.medium.com/comparison-of-the-open-source-olap-systems-for-big-data-clickhouse-druid-and-pinot-8e042a5ed1c7) [Blog] 197 | * ⭐ [Druid](https://github.com/apache/druid/) [GitHub, 12190 stars] 198 | * ⭐ [ClickHouse](https://clickhouse.tech/) 199 | * ⭐ [Apache Pinot](https://pinot.apache.org/) / [Pinot on Github](https://github.com/apache/incubator-pinot) [GitHub, 4284 stars] 200 | 201 | ##### Object Storage 202 | * 🔱 [Ceph](https://ceph.io/) - implements object storage on a single distributed computer cluster 203 | 204 | 205 | ![Serverless](./Resources/Images/serverless.png) 206 | ----- 207 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 208 | 209 | #### General 210 | * 🔱 [AWS Lambda](https://aws.amazon.com/lambda/) 211 | * 🔱 [Azure Functions Serverless Compute](https://azure.microsoft.com/en-us/services/functions/) 212 | * 🔱 [Google CloudFunctions](https://cloud.google.com/functions) 213 | 214 | #### Examples and Learning Resources 215 | * ⭐ [serverless examples](https://github.com/serverless/examples) - collection of boilerplates and examples of serverless architectures [GitHub, 10499 stars] 216 | * ⭐ [Wild Rydes Serverless Workshops](https://github.com/aws-samples/aws-serverless-workshops) - labs to set up serverless applications on AWS [GitHub, 3825 stars] 217 | 218 | #### Tools & Frameworks 219 | * ⭐ [serverless](https://github.com/serverless/serverless) - Serverless Framework using AWS Lambda, Azure Functions, Google CloudFunctions [GitHub, 43750 stars] 220 | * ⭐ [Chalice](https://github.com/aws/chalice) - Python Serverless Microframework for AWS [GitHub, 9297 stars] 221 | * ⭐ [OpenFaaS](https://github.com/openfaas/faas) - Serverless Functions Made Simple [GitHub, 22320 stars] 222 | * ⭐ [Up](https://github.com/apex/up) - deploy infinitely scalable serverless apps, apis, and sites [GitHub, 8638 stars] 223 | * ⭐ [Dapr](https://github.com/dapr/dapr) - portable, serverless, event-driven runtime for stateless and stateful microservices [GitHub, 19789 stars] 224 | * ⭐ [Nuclio](https://github.com/nuclio/nuclio) - High-Performance Serverless event and data processing platform [GitHub, 4649 stars] 225 | 226 | 227 | ![Security](./Resources/Images/security.png) 228 | ----- 229 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 230 | 231 | #### General Tools 232 | * ⭐ [kubesploit](https://github.com/cyberark/kubesploit) - Cross-platform post-exploitation HTTP/2 Command & Control server [GitHub, 940 stars] 233 | * 🔱 [consul](https://www.consul.io) - Consul automates networking for simple and secure application delivery 234 | * ⭐ [Komiser](https://github.com/mlabouardy/komiser) - Multi-cloud environment inspector for costs and security [GitHub, 2866 stars] 235 | * ⭐ [tfsec](https://github.com/tfsec/tfsec) - Security scanner for your Terraform code [GitHub, 5315 stars] 236 | 237 | #### Security Audit Tools 238 | * ⭐ [kube-bench](https://github.com/aquasecurity/kube-bench) - Checks usage of security best practices as defined in the CIS Kubernetes Benchmark [GitHub, 5306 stars] 239 | * ⭐ [Prowler](https://github.com/toniblyx/prowler) - security tool to perform AWS security best practices assessments [GitHub, 6957 stars] 240 | * ⭐ [ScoutSuite](https://github.com/toniblyx/prowler) - Multi-Cloud Security Auditing Tool [GitHub, 6957 stars] 241 | 242 | #### Secrets 243 | * ⭐ [sealed-secrets](https://github.com/bitnami-labs/sealed-secrets) - A Kubernetes controller and tool for one-way encrypted Secrets [GitHub, 5597 stars] 244 | * 🔱 [Vault](https://www.vaultproject.io) - Manage Secrets and Protect Sensitive Data 245 | * ⭐ [aws-vault](https://github.com/99designs/aws-vault) - securely store and access AWS credentials in development environments [GitHub, 6927 stars] 246 | * ⭐ [SOPS: Secrets OPerationS](https://github.com/mozilla/sops) - Simple and flexible tool for managing secrets on any platform [GitHub, 11257 stars] 247 | 248 | #### Protocols 249 | * ⭐ [Kerberos](https://web.mit.edu/kerberos/) 250 | * ⭐ [OpenLDAP](https://www.openldap.org/) 251 | * ⭐ [OIDC](https://openid.net/connect/) 252 | 253 | #### Auth, API Gateways etc. 254 | * ⭐ [Grant](https://github.com/simov/grant) - OAuth Proxy [GitHub, 3743 stars] 255 | * ⭐ [Dex](https://github.com/dexidp/dex) - OpenID Connect (OIDC) identity and OAuth 2.0 provider [GitHub, 7536 stars] 256 | * ⭐ [Kong](https://github.com/Kong/kong) - Cloud-Native API Gateway [GitHub, 33318 stars] 257 | * ⭐ [Gloo Edge](https://github.com/solo-io/gloo) - Kubernetes-native API Gateway Built on Envoy [GitHub, 3601 stars] 258 | 259 | #### Other 260 | * ⭐ [Awesome WAF](https://github.com/0xInfection/Awesome-WAF) - Everything about web-application firewalls (WAF) [GitHub, 4759 stars] 261 | * ⭐ [PENTESTING-BIBLE](https://github.com/blaCCkHatHacEEkr/PENTESTING-BIBLE) - Learn ethical hacking [GitHub, 11035 stars] 262 | 263 | 264 | ![Learning Resources](./Resources/Images/learning_resources.png) 265 | ----- 266 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 267 | 268 | #### Kubernetes 269 | * ⭐ [Kubernetes Workshop](https://github.com/eon01/kubernetes-workshop) - Gentle introduction to Kubernetes with more than just the basics 270 | * ⭐ [Kubernetes Guide](https://github.com/hobby-kube/guide) - Kubernetes clusters for the hobbyist [GitHub, 5287 stars] 271 | * 📙 [Learn Kubernetes Basics](https://kubernetes.io/docs/tutorials/kubernetes-basics/) 272 | * 📙 [Introduction to Kubernetes](https://learning.edx.org/course/course-v1:LinuxFoundationX+LFS158x+3T2020/home) 273 | 274 | #### AWS 275 | * 📙 [Understanding Amazon EC2 Terminology](https://levelup.gitconnected.com/understanding-amazon-ec2-terminology-85be19d0af28) [Blog, Oct 2018] 276 | 277 | #### Kafka 278 | * 📙 [Learn Apache Kafka by Confluent](https://developer.confluent.io/) 279 | 280 | #### DevOps 281 | * ⭐ [DevOps Guide](https://github.com/Tikam02/DevOps-Guide) - from basic to advanced with Interview Questions and Notes [GitHub, 5423 stars] 282 | * ⭐ [DevOps Exercises](https://github.com/bregman-arie/devops-exercises) - questions and exercises on technical topics related to DevOps and SRE [GitHub, 33396 stars] 283 | 284 | #### Docker 285 | * ⭐ [Docker Curriculum](https://github.com/prakhar1989/docker-curriculum) - comprehensive tutorial on getting started with Docker [GitHub, 4892 stars] 286 | 287 | 288 | ![Infrastructure as Code](./Resources/Images/infra_as_code.png) 289 | ----- 290 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 291 | 292 | #### Infrastructure as Code Tools 293 | * ⭐ [Terraform](https://www.terraform.io/) - open-source infrastructure as code software tool for consistent CLI workflow 294 | * 🔱 [CloudFormation](https://aws.amazon.com/cloudformation/) - cloud provisioning with infrastructure as code for AWS 295 | * 🔱 [Azure Resource Manager](https://azure.microsoft.com/en-us/features/resource-manager/) - manage your app resources on Azure 296 | * 🔱 [Cloud Deployment Manager](https://cloud.google.com/deployment-manager/) - create and manage cloud resources on GCP with simple templates 297 | * ⭐ [HashiCorp Vagrant](https://www.vagrantup.com/) / [GitHub, 22046 stars] 298 | * 🔱 [CFEngine](https://cfengine.com/) - automate your infrastructure, security & compliance 299 | * ⭐ [Ansible](https://www.ansible.com/) - automation across open hybrid cloud deployments 300 | * 🔱 [CHEF](https://www.chef.io/products/chef-infra) - Policy-Based Configuration Management Automation Architecture 301 | * ⭐ [Pulumi](https://github.com/pulumi/pulumi) - Modern Infrastructure as Code. Any cloud, any language [GitHub, 14215 stars] 302 | 303 | #### Additional Tooling 304 | * ⭐ [Terraformer](https://github.com/GoogleCloudPlatform/terraformer) - CLI tool to generate terraform files from existing infrastructure (reverse Terraform) [GitHub, 8970 stars] 305 | * ⭐ [Checkov](https://github.com/bridgecrewio/checkov) - static code analysis tool for infrastructure-as-code [GitHub, 4890 stars] 306 | 307 | #### Examples and Learning Resources 308 | * ⭐ [Ansible for DevOps examples](https://github.com/geerlingguy/ansible-for-devops) [GitHub, 6378 stars] 309 | * ⭐ [Ansible for Kubernetes Examples](https://github.com/geerlingguy/ansible-for-kubernetes) [GitHub, 581 stars] 310 | 311 | 312 | ![Other](./Resources/Images/other_topics.png) 313 | ----- 314 | [🔙 Back to the Table of Contents](https://github.com/ivan-bilan/The-Microservices-Pandect#table-of-contents) 315 | 316 | #### Streaming Frameworks / Engines 317 | * ⭐ [Apache Flink](https://github.com/apache/flink) - stream processing framework [GitHub, 20121 stars] 318 | * ⭐ [Apache Beam](https://github.com/apache/beam) - unified programming model for Batch and Streaming [GitHub, 6012 stars] 319 | * ⭐ [Apache Storm](https://storm.apache.org/) / [Apache Storm on GitHub](https://github.com/apache/storm) - distributed realtime computation system [GitHub, 6403 stars] 320 | * 🔱 [Amazon Kinesis Streams](https://aws.amazon.com/kinesis/) [AWS] 321 | 322 | #### Effective Containerization 323 | * ⭐ [distroless](https://github.com/GoogleContainerTools/distroless) - Language focused docker images, minus the operating system [GitHub, 14182 stars] 324 | 325 | #### Load Shedding 326 | Load Shedding is used to prevent your microservices from an outage by reducing non-essential requests. 327 | 328 | ##### Learning Resources 329 | * 🎥️ [AWS re:Invent 2021 - Keeping Netflix reliable using prioritized load shedding](https://www.youtube.com/watch?v=TmNiHbh-6Wg) [YouTube] 330 | * 🎥️ [DevOneConf 2018 - Acacio Cruz - Google - Load-shedding](https://www.youtube.com/watch?v=XNEIkivvaV4) [YouTube] 331 | * 📙 [Keeping Netflix Reliable Using Prioritized Load Shedding](https://netflixtechblog.com/keeping-netflix-reliable-using-prioritized-load-shedding-6cc827b02f94?gi=9f0270975aac) [Blog, Nov 2020] 332 | 333 | ##### Tools 334 | * ⭐ [Concurrency Limits](https://github.com/Netflix/concurrency-limits) - TCP congestion control to auto-detect concurrency limits for services [GitHub, 2836 stars] 335 | 336 | #### Testing 337 | ##### General 338 | * 📙 [On the Diverse And Fantastical Shapes of Testing by Martin Fowler](https://martinfowler.com/articles/2021-test-shapes.html) [Blog, June 2021] 339 | 340 | ##### Tooling 341 | * ⭐ [Terratest](https://github.com/gruntwork-io/terratest) - Go library to write automated tests for your infrastructure code [GitHub, 6494 stars] 342 | * ⭐ [Serverless Offline](https://github.com/dherault/serverless-offline) - Emulate AWS λ and API Gateway locally [GitHub, 4747 stars] 343 | * ⭐ [Moto](https://github.com/spulec/moto) - easily mock out tests based on AWS infrastructure [GitHub, 6186 stars] 344 | * ⭐ [LocalStack](https://github.com/localstack/localstack) - fully functional local AWS cloud stack [GitHub, 44.6k stars] 345 | 346 | #### PaaS - Platform-as-a-service 347 | * ⭐ [Empire](https://github.com/remind101/empire) - PaaS built on top of Amazon EC2 Container Service with Heroku like workflow [GitHub, 2672 stars] 348 | 349 | #### Container Network Interface (CNI) 350 | * ⭐ [CNI](https://github.com/containernetworking/cni) - networking for Linux containers [GitHub, 4517 stars] 351 | 352 | #### Kafka 353 | * ⭐ [strimzi](https://github.com/strimzi/strimzi-kafka-operator) - Apache Kafka running on Kubernetes [GitHub, 3545 stars] 354 | 355 | #### Documenting Architectural Design 356 | * 📙 [Companies Using RFCs or Design Docs and Examples of These](https://blog.pragmaticengineer.com/rfcs-and-design-docs/) - from Pragmatic Engineer [Blog, June 2022] 357 | 358 | ----- 359 | 360 | ## License [CC0](./LICENSE) 361 | 362 | ## Attributions 363 | #### Resources 364 | * All linked resources belong to original authors 365 | 366 | #### Icons 367 | * [skill book](https://thenounproject.com/search/?q=ancient+greek+book&i=3367528) by HideMaru from the [Noun Project](https://thenounproject.com) 368 | * [Harp](https://thenounproject.com/2013evrika/uploads/?i=3440733) by Marina Pugacheva from the [Noun Project](https://thenounproject.com) 369 | * [Ancient Greek Theater](https://thenounproject.com/search/?q=greek+theater&i=38701) by Leonidas Oikonomou from the [Noun Project](https://thenounproject.com) 370 | * [deity](https://thenounproject.com/term/deity/3156641/) by Eucalyp from the [Noun Project](https://thenounproject.com) 371 | * [trojan](https://thenounproject.com/term/trojan/3158946/) by Eucalyp from the [Noun Project](https://thenounproject.com) 372 | * [Fire Torch](https://thenounproject.com/term/fire-torch/3719083/) by Eucalyp from the [Noun Project](https://thenounproject.com) 373 | * [acropolis](https://thenounproject.com/eucalyp/collection/ancient-greece-line-00000177/?i=3719071) by Eucalyp from the [Noun Project](https://thenounproject.com) 374 | * [papyrus](https://thenounproject.com/iconmark/collection/greek-mythology/?i=3515982) by IconMark from the [Noun Project](https://thenounproject.com) 375 | * [Hammer](https://thenounproject.com/iconmark/collection/greek-mythology/?i=3507440) by IconMark from the [Noun Project](https://thenounproject.com) 376 | * [balance](https://thenounproject.com/term/balance/2368882/) by Flatart from the [Noun Project](https://thenounproject.com) 377 | * [Atlas](https://thenounproject.com/term/atlas/2225824/) by parkjisun from the [Noun Project](https://thenounproject.com) 378 | * [olympus](https://thenounproject.com/term/olympus/3507446/) by IconMark from the [Noun Project](https://thenounproject.com) 379 | 380 | #### Fonts 381 | * [Dalek Font](https://www.dafont.com/dalek.font) 382 | 383 | ----- 384 | 385 |

The Pandect Series also includes

386 | 387 |

388 | 389 | 390 | 391 |       392 | 393 | 394 | 395 |

396 | --------------------------------------------------------------------------------