|
| 1 | +--- |
| 2 | +duration: 3 hours |
| 3 | +--- |
| 4 | + |
| 5 | +# Cloud-native applications. Microservice architecture | with Istio |
| 6 | + |
| 7 | +Cloud-native is a term used to describe container-based environments. Cloud-native technologies are used to develop applications built with services packaged in containers, deployed as microservices, and managed on elastic infrastructure through agile DevOps processes and continuous delivery workflows. |
| 8 | + |
| 9 | +[Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/), [launched](https://www.cncf.io/announcements/2015/06/21/new-cloud-native-computing-foundation-to-drive-alignment-among-container-technologies/) in 2015 by the Linux Foundation. |
| 10 | + |
| 11 | +## What is Cloud? |
| 12 | + |
| 13 | +- remote data centers |
| 14 | +- offers software or hardware to a business or individual |
| 15 | +- you can access it through the Internet |
| 16 | + |
| 17 | +## Why business is moving to the Cloud? |
| 18 | + |
| 19 | +- **Flexibility and agility** |
| 20 | + Cloud computing makes it easy to quickly scale up/down the capacity. |
| 21 | +- **Security** |
| 22 | + Implement effective disaster recovery solutions without large, upfront investments. |
| 23 | +- **Automatic software and hardware updates** |
| 24 | + The servers are maintained by your supplier. |
| 25 | +- **Saves money on hardware, “pay as you go”** |
| 26 | +- **Increased collaboration** |
| 27 | + Team members can work anywhere. |
| 28 | +- **Сompetitive advantage** |
| 29 | + Small businesses have access to enterprise-class technology they couldn’t afford on their own. |
| 30 | + |
| 31 | +[Read more](https://www.pointclick.net/moving-to-the-cloud/) |
| 32 | + |
| 33 | +## Choose your service model |
| 34 | + |
| 35 | +- How much you can and want **to manage yourself**? |
| 36 | +- How much you want **your service provider to manage**? |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | +Match services yourself: DigitalOcean, Wix, Heroku, Shopify, Amazon Web Services (AWS), Salesforce, Google Cloud Platform (GCP), GitHub, Youtube, GitLab, Travis CI, IBM cloud, Trello. |
| 41 | + |
| 42 | +[Read more](https://www.bmc.com/blogs/saas-vs-paas-vs-iaas-whats-the-difference-and-how-to-choose/_) |
| 43 | + |
| 44 | +## What are cloud-native applications? |
| 45 | + |
| 46 | +Cloud-native applications are: |
| 47 | +- a collection of small, independent, and loosely coupled services |
| 48 | +- providing a consistent development and automated management |
| 49 | +- designed to run in the cloud. |
| 50 | + |
| 51 | +**Key attributes of cloud-native:** |
| 52 | + |
| 53 | +1. Packaged as lightweight **containers** |
| 54 | +2. Developed with best-of-breed **languages and frameworks** |
| 55 | +3. Designed as **loosely coupled microservices** |
| 56 | + |
| 57 | +**Other attributes:** |
| 58 | + |
| 59 | +4. **Centered around APIs** for interaction and collaboration |
| 60 | +5. **Architected** with a clean separation of **stateless and stateful** services |
| 61 | +6. **Isolated** from the server and operating system dependencies |
| 62 | +7. **Deployed** on self-service, elastic, cloud infrastructure |
| 63 | +8. **Managed** through agile DevOps processes |
| 64 | + Each service has an independent life cycle and CI/CD. |
| 65 | +9. **Automated** capabilities |
| 66 | +10. Defined, policy-driven resource allocation |
| 67 | + |
| 68 | +[Read more](https://thenewstack.io/10-key-attributes-of-cloud-native-applications/) |
| 69 | + |
| 70 | +## Monolithic vs Microservices architecture |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | +**Microservices** - a style that structures an application as a collection of services that are: |
| 75 | + |
| 76 | +- highly maintainable and testable |
| 77 | +- [loosely coupled](https://en.wikipedia.org/wiki/Loose_coupling) |
| 78 | +- independently deployable |
| 79 | +- organized around business capabilities |
| 80 | +- owned by a small team |
| 81 | +- sourced as a separate Git repo with its tests |
| 82 | + |
| 83 | +**Monolithic** - a style where a single-tiered software application in which different components are combined into a single program from a single platform. |
| 84 | + |
| 85 | +## Microservices are NOT |
| 86 | + |
| 87 | +1. Your SOA (service-oriented architecture) cut into services |
| 88 | + |
| 89 | +2. Anything involving a large framework |
| 90 | + What part of "micro" are folks missing? |
| 91 | + |
| 92 | +3. Development patterns where you deploy things into containers |
| 93 | + You want containers, do containers. Fine with me. Deployment decisions have nothing to do with microservices. If you're coupling your code to the architecture that tightly, re-read #2. |
| 94 | + |
| 95 | +4. Things with some cool language |
| 96 | + Once again, if you like cool languages, use them. Sounds fun. It's just has nothing to do with microservices. |
| 97 | + |
| 98 | +5. Systems with thousands of little tiny pieces of code scattered all over the place making it impossible to reason about anything |
| 99 | + You're loving the idea to death. You've gone too far the other way. Both the "micro" and "service" part are equally important. |
| 100 | + |
| 101 | +[Reference](https://danielbmarkham.com/honest-microservices/) |
| 102 | + |
| 103 | +## Application centered around APIs |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | +## Service mesh |
| 108 | + |
| 109 | +**Service mesh** - an infrastructure layer for facilitating service-to-service communications between microservices, often using a **sidecar proxy**. |
| 110 | + |
| 111 | +**Provides:** |
| 112 | + |
| 113 | + - Connection between microservices |
| 114 | + - Monitoring, observability into communications |
| 115 | + - Securing |
| 116 | + - Managing |
| 117 | + |
| 118 | + |
| 119 | + |
| 120 | +## Service mesh architecture |
| 121 | + |
| 122 | + |
| 123 | + |
| 124 | +Platforms implementing service mesh: |
| 125 | + |
| 126 | + - **Istio** |
| 127 | + - Consul |
| 128 | + - Linkerd |
| 129 | + |
| 130 | +## Service mesh example |
| 131 | + |
| 132 | + |
| 133 | + |
| 134 | +## Real large examples of service mesh |
| 135 | + |
| 136 | + |
| 137 | + |
| 138 | +## Istio |
| 139 | + |
| 140 | +**Istio** - a platform that implements service mesh (provides a uniform way to secure, connect, and monitor microservices). |
| 141 | + |
| 142 | + |
| 143 | + |
| 144 | +## What can you do with Istio? |
| 145 | + |
| 146 | +Istio provides operational requirements: |
| 147 | + |
| 148 | +- canary rollout (deployment) |
| 149 | +- A/B testing |
| 150 | +- rate-limiting |
| 151 | +- access control |
| 152 | +- end-to-end authentication |
0 commit comments