A microservice architecture can consist of many individual services. By building in resilience we make sure that the system will be able to dynamically recover if a service is not reachable.
- [Instructor] When talking about microservices developed resilience frequently comes up. But what does this actually mean? As we see on this definition here it's about flexibility and the ability to recover. What does this mean for software architecture? Let's look at our architecture. We have one main application communicating with one microservice. To get this running you have to set the address of the microservice on the main application. If the p or the part of the microservice changes we have to change this in the main application, restart it and it will work again.
If our microservice is down the main application will always try to reach it and maybe even crash with an exception if we don't develop defensively and handle errors like we did. With one microservice this could be manageable. But to see as customers looks more like this. And this is our such a real application looks like in a monitoring tool. If we hotwire a microservice architecture it becomes tightly coupled again, this time on the network layer. We lose many benefits microservices have to offer.
So what could we do to make our still small architecture more resilient? First we don't want to hardwire the end points on the main application. Plus we want to detect and not fail when the service is down. To achieve that we have to flip the way things are wired up. Now the service has to know an endpoint address of the main application to announce itself and to intent it can serve. The main application has to keep track of the services available and route the requests there.
We call this service registry. This is what we will build next.
After explaining some basics about Node.js and microservices, Daniel shows you how to sketch out the planned architecture for your application and get the boilerplate code, modules, and credentials in place. Next, he shows how to create a bot user in Slack, connect to Slack, and post messages. He also shows you how to get your bot to process variations in text by creating logic that delegates the processing of intent to dedicated modules. Lastly, he shows how to register additional services and he covers how to use monitoring to identify architectural or performance issues.
- Using Slack APIs
- Sketching out a Slack bot architecture
- Setting up a project and choosing modules
- Creating and naming your bot
- Connecting to Slack
- Setting up and using natural language processing
- Routing by intents
- Implementing geocoding and time calculation
- Adding and monitoring services