[00:00.000 --> 00:05.000] Welcome, Bobor. [00:05.000 --> 00:09.000] Hi, everyone. Thank you. [00:09.000 --> 00:14.000] Thank you. Hi, everyone. [00:14.000 --> 00:16.000] I am super excited to be here. [00:16.000 --> 00:19.000] Welcome to one of my sessions about [00:19.000 --> 00:23.000] observing your APIs with API gateway plugins. [00:23.000 --> 00:25.000] Let me introduce myself first. [00:25.000 --> 00:27.000] My name is Bobor. [00:27.000 --> 00:30.000] I am a developer advocate for Apache API 6. [00:30.000 --> 00:33.000] Sometimes it's so difficult to pronounce my name. [00:33.000 --> 00:35.000] People say it's from different countries. [00:35.000 --> 00:38.000] Is it like a Bebo or Bobor or like a Bebo? [00:38.000 --> 00:43.000] And then I say, okay, you can translate my first name as a tiger. [00:43.000 --> 00:45.000] It means tiger, Bobor. [00:45.000 --> 00:49.000] My last name, Murzokov, English version will be Livermore. [00:49.000 --> 00:51.000] In this case, Tiger Livermore. [00:51.000 --> 00:53.000] You can call me like Tiger Livermore. [00:53.000 --> 00:55.000] It's up to you. [00:55.000 --> 00:58.000] And you can also reach out to me on these social channels [00:58.000 --> 01:01.000] if you have any questions regarding sessions. [01:01.000 --> 01:04.000] So with that, we can get started. [01:04.000 --> 01:07.000] First thing first, what I want to do now is take a selfie [01:07.000 --> 01:10.000] because I have my TikTok account. [01:10.000 --> 01:13.000] I just start to run my blog recently. [01:13.000 --> 01:18.000] Just a moment. Maybe this is better. [01:18.000 --> 01:21.000] That was good. Thank you. [01:21.000 --> 01:25.000] I will just put some hashtags on that. [01:25.000 --> 01:27.000] So thank you Fabiano. Now I can leave. [01:27.000 --> 01:30.000] I did my job. I can go home. [01:30.000 --> 01:33.000] I did my Instagram picture, right? [01:33.000 --> 01:37.000] But I have today a very interesting agenda for you. [01:37.000 --> 01:41.000] We'll talk about what is APIs and API observability [01:41.000 --> 01:47.000] and how we can use API gateway for observing your APIs [01:47.000 --> 01:49.000] as a central point for observation. [01:49.000 --> 01:53.000] And then we will break down all API observability three pillars. [01:53.000 --> 01:58.000] We know that we have logging, tracing, and metrics, right? [01:58.000 --> 02:01.000] And we will learn how to enable these three pillars [02:01.000 --> 02:04.000] by using Apache API 6 plugins. [02:04.000 --> 02:07.000] And I have then a small demo for you. [02:07.000 --> 02:09.000] I hope you will like it. [02:09.000 --> 02:11.000] And that's good. [02:11.000 --> 02:12.000] APIs, right? [02:12.000 --> 02:14.000] API is just the three letters [02:14.000 --> 02:16.000] acronym for application program interface. [02:16.000 --> 02:19.000] By now, we are all familiar with this term, right? [02:19.000 --> 02:24.000] Because we are living in increasingly API-centric world. [02:24.000 --> 02:27.000] Even chat GPT uses API. [02:27.000 --> 02:31.000] Because under the hood, it calls some OpenAI API lists [02:31.000 --> 02:34.000] to collect some language models. [02:34.000 --> 02:36.000] Now my question to you. [02:36.000 --> 02:40.000] Who doesn't know what is API? [02:40.000 --> 02:42.000] Everybody knows. You don't know. [02:42.000 --> 02:45.000] You are lucky I have a brief for you. [02:45.000 --> 02:50.000] You will get this T-shirt because you don't know what's API 6. [02:50.000 --> 02:53.000] What is your size? [02:53.000 --> 02:56.000] I will handle it for you here. [02:56.000 --> 02:58.000] Actually, I have enough T-shirts. [02:58.000 --> 03:01.000] If you are first the three good, [03:01.000 --> 03:04.000] if I get the first three good answer, I will give it to you. [03:04.000 --> 03:08.000] And we have also some medals, stickers if you would like to get, [03:08.000 --> 03:09.000] please feel free. [03:09.000 --> 03:13.000] It's like free stuff from community, I would say. [03:13.000 --> 03:17.000] And we know that success of your services, right, [03:17.000 --> 03:22.000] depends on the performance, availability, and integrity of your APIs. [03:22.000 --> 03:24.000] Here, another question, Rice. [03:24.000 --> 03:28.000] How to achieve these three indicators of success? [03:28.000 --> 03:32.000] How to achieve these three indicators of success for your APIs? [03:32.000 --> 03:35.000] Let's say we have API should be all the time available, right? [03:35.000 --> 03:37.000] It should be integratable. [03:37.000 --> 03:40.000] It should be performance with a high performance. [03:40.000 --> 03:43.000] Do you have any idea? [03:43.000 --> 03:47.000] Yes, you got one T-shirt. [03:47.000 --> 03:49.000] Yes, monitoring, exactly. [03:49.000 --> 03:52.000] And what do you say, distributing? [03:52.000 --> 03:55.000] Yeah, distribute system, monitoring? [03:55.000 --> 04:00.000] Just placing it as a service in a distributed process. [04:00.000 --> 04:01.000] Yeah, this is also a rice solution. [04:01.000 --> 04:04.000] But you will get only the medal. [04:04.000 --> 04:05.000] Sorry. [04:05.000 --> 04:09.000] But one solution can be using by API gateways. [04:09.000 --> 04:13.000] Because API gateways, actually, nowadays, what we do, [04:13.000 --> 04:17.000] we build multiple microservices and maybe several less APIs [04:17.000 --> 04:23.000] or multiple REST APIs for our unique, maybe, the service, right? [04:23.000 --> 04:27.000] And in this flow, API gateways serves as a central point [04:27.000 --> 04:32.000] for routing all your incoming requests to the internet destinations. [04:32.000 --> 04:35.000] These destinations can be, as you can see, database, [04:35.000 --> 04:38.000] or maybe short-party API services. [04:38.000 --> 04:42.000] Or it can be also some serverless APIs like Azure Function [04:42.000 --> 04:47.000] or AWS Lambda, maybe any other open source functions, right? [04:47.000 --> 04:51.000] And it means it's accessed a single layer between your clients [04:51.000 --> 04:54.000] and the backend services, right? [04:54.000 --> 04:58.000] That can manage all the traffic coming to your backend services. [04:58.000 --> 05:00.000] It's a very straightforward term, right? [05:00.000 --> 05:01.000] API gateway term. [05:01.000 --> 05:06.000] And then it can also be a right point to learn [05:06.000 --> 05:11.000] for your API observabilities because it's uniquely identified [05:11.000 --> 05:14.000] to know all the traffic moving from client side [05:14.000 --> 05:16.000] to our backend service network. [05:16.000 --> 05:21.000] And instead of relying on, let's say, some other technologies, [05:21.000 --> 05:26.000] SDKs, APIs, and services to enable this observability [05:26.000 --> 05:28.000] and improve this observability, [05:28.000 --> 05:31.000] you can easily integrate this job with API gateway. [05:31.000 --> 05:33.000] We have a bunch of API gateways. [05:33.000 --> 05:36.000] I'm not selling anything, but we are talking about now [05:36.000 --> 05:41.000] API 6, what kind of plugins you can use today. [05:41.000 --> 05:46.000] And next, for example, you can ask, what is Apache API 6? [05:46.000 --> 05:50.000] Maybe you know the world's largest open source software [05:50.000 --> 05:52.000] software foundation, Apache software foundation. [05:52.000 --> 05:55.000] Maybe some of you are part of it, right? [05:55.000 --> 05:57.000] Who is a part of it, ASF? [05:57.000 --> 06:00.000] Who is contributing to open source projects of Apache [06:00.000 --> 06:02.000] software foundation? [06:02.000 --> 06:05.000] You, we have some people. [06:05.000 --> 06:10.000] And who knows Apache Kafka, Cassandra, Tomcat? [06:10.000 --> 06:11.000] Everybody knows. [06:11.000 --> 06:15.000] And Apache API 6 is also one of the top fastest growing [06:15.000 --> 06:17.000] project of ESF nowadays. [06:17.000 --> 06:20.000] You can, of course, you cannot compare it with Cassandra, [06:20.000 --> 06:22.000] Tomcat, but maybe in the future. [06:22.000 --> 06:25.000] It was initiated in 2019, but we are still, [06:25.000 --> 06:27.000] we have some open source community around the world. [06:27.000 --> 06:30.000] I am, for example, visiting Tallinn, Estonia. [06:30.000 --> 06:33.000] We have contributors from US, Canada. [06:33.000 --> 06:36.000] We have some with China, India, and so on. [06:36.000 --> 06:37.000] You can check it out. [06:37.000 --> 06:41.000] It's a very nice API gateway solution. [06:41.000 --> 06:46.000] And as you can see, API plugins, it's a very hard mechanism [06:46.000 --> 06:50.000] in API gateway that can be plugged into your API gateway [06:50.000 --> 06:51.000] solution. [06:51.000 --> 06:54.000] With that, you can extend further some functionalities. [06:54.000 --> 06:58.000] You can enable cross-captain constants like authorization, [06:58.000 --> 07:02.000] authentication, security, transformation, rate limiting, [07:02.000 --> 07:03.000] and so on. [07:03.000 --> 07:07.000] At the same time, you can enable some kind of observation, [07:07.000 --> 07:08.000] right? [07:08.000 --> 07:11.000] And when you're using API 6, for example, you should face [07:11.000 --> 07:15.000] with multiple types of plugins broken down into several [07:15.000 --> 07:19.000] categories, or sometimes you want something custom [07:19.000 --> 07:20.000] plugin, right? [07:20.000 --> 07:22.000] To fit your needs. [07:22.000 --> 07:26.000] And with API 6, similar API gateway nowadays, more than [07:26.000 --> 07:29.000] API gateway provides some language support. [07:29.000 --> 07:31.000] You can choose your favorite language, your familiar [07:31.000 --> 07:34.000] reach, and you can create some custom plugins. [07:34.000 --> 07:38.000] Maybe you are Java developer, or maybe you are Go developer [07:38.000 --> 07:41.000] or Python, you can choose your favorite language and write [07:41.000 --> 07:42.000] the plugins. [07:42.000 --> 07:43.000] Let me show you. [07:43.000 --> 07:46.000] Or you don't want to write a code. [07:46.000 --> 07:51.000] There is a dashboard where you can do user-friendly [07:51.000 --> 07:52.000] dashboard by using it. [07:52.000 --> 07:56.000] You can just drag and drop existing plugins together to [07:56.000 --> 07:58.000] build new plugins. [07:58.000 --> 08:01.000] You can orchestrate one or multiple plugins in this way. [08:01.000 --> 08:06.000] You can specify some conditions and also put some [08:06.000 --> 08:09.000] business flow on it and generate new plugins. [08:09.000 --> 08:13.000] It's a very useful feature that API 6 dashboard provides. [08:13.000 --> 08:17.000] For example, you can put together multiple observability [08:17.000 --> 08:21.000] plugins in one flow and then maybe enable full [08:21.000 --> 08:25.000] observability backend tools in this diagram. [08:25.000 --> 08:28.000] Let me, you can just maybe observe later. [08:28.000 --> 08:31.000] Now let's jump into the main topic. [08:31.000 --> 08:33.000] What's the API observability? [08:33.000 --> 08:38.000] Can anyone tell what's the API observability? [08:38.000 --> 08:40.000] In one word. [08:40.000 --> 08:42.000] No? [08:42.000 --> 08:44.000] No. [08:44.000 --> 08:48.000] The other problem, like relation and latency, or [08:48.000 --> 08:51.000] just great status codes. [08:51.000 --> 08:53.000] Traces, yes, right? [08:53.000 --> 08:58.000] And for, I think I gave to you this short, right? [08:58.000 --> 09:00.000] For your, yeah. [09:00.000 --> 09:03.000] The actual thing is doing is very important. [09:03.000 --> 09:05.000] Yes, it's also right, yeah. [09:05.000 --> 09:09.000] And it means API observability is all about how you absorb [09:09.000 --> 09:10.000] your APIs, right? [09:10.000 --> 09:14.000] Instead of relying on predetermined data like metrics, [09:14.000 --> 09:18.000] monitoring, and wait for the failure, you can use [09:18.000 --> 09:22.000] API observability to enable announce, [09:22.000 --> 09:26.000] announce, or announce, in this diagram as you can see. [09:26.000 --> 09:30.000] Because compared to traditional API monitoring, [09:30.000 --> 09:33.000] we have traditional API monitoring and observability, right? [09:33.000 --> 09:37.000] This is monitoring focused on analyzing [09:37.000 --> 09:39.000] now and announce, what does it mean? [09:39.000 --> 09:42.000] Now and announce means you know what the measure, [09:42.000 --> 09:45.000] you know the number of requests, you know number of errors, [09:45.000 --> 09:47.000] that you know what the measure, right? [09:47.000 --> 09:52.000] But on the other hand, API observability lets you [09:52.000 --> 09:56.000] analyze exactly what was the issue, [09:56.000 --> 10:01.000] and how this issue occurred by learning three metrics, right? [10:01.000 --> 10:05.000] You know, again, like logging and metrics and tracing. [10:05.000 --> 10:10.000] So because API observability nowadays is a part of [10:10.000 --> 10:14.000] every API development teams, let's say, for example, [10:14.000 --> 10:17.000] who can use API observability during the API development? [10:17.000 --> 10:20.000] Yes, you can see, for example, product managers, [10:20.000 --> 10:25.000] they can use to learn consumption and usage of your APIs. [10:25.000 --> 10:28.000] Or maybe security team, they can use to protect [10:28.000 --> 10:34.000] or maybe detect some possible API threats from outside, right? [10:34.000 --> 10:39.000] So as I said, let's have a look at these three pillars now [10:39.000 --> 10:44.000] and learn what API gateway can provide as a solution [10:44.000 --> 10:48.000] for these pillars, tracing, logging, and metrics. [10:48.000 --> 10:52.000] If I start with logging, it's a very tribal step, right? [10:52.000 --> 10:55.000] To start your observability because you can use logs [10:55.000 --> 11:00.000] to identify or debug what's happening. [11:00.000 --> 11:04.000] If you are a junior developer, you will first start digging into logs [11:04.000 --> 11:06.000] because in order to understand the project, [11:06.000 --> 11:08.000] because the project has zero documentation, [11:08.000 --> 11:10.000] you need to have a look at logs, [11:10.000 --> 11:13.000] you need to have a look at some API things. [11:13.000 --> 11:19.000] So here, in order to enable this logging, [11:19.000 --> 11:21.000] you can use some kind of plugins. [11:21.000 --> 11:25.000] For example, API 6 provides HTTP-logger plugin, Kafka-logger, [11:25.000 --> 11:29.000] or it depends on which kind of integration you have. [11:29.000 --> 11:32.000] For example, you can use Google Cloud Logger. [11:32.000 --> 11:35.000] Let's say HTTP-logger is a basic logger. [11:35.000 --> 11:40.000] Let's just enable to push all the log data from your API gateway [11:40.000 --> 11:44.000] to HTTP-S or HTTP servers. [11:44.000 --> 11:49.000] It means you can further drive some useful metrics from that logs. [11:49.000 --> 11:52.000] Or let's say, what about metrics? [11:52.000 --> 11:57.000] Metrics are actually just the data collected [11:57.000 --> 11:59.000] over the time, right? [11:59.000 --> 12:01.000] Times gas, but the metrics collected. [12:01.000 --> 12:04.000] But metrics you can use in the future [12:04.000 --> 12:07.000] in the distributed systems like Elasticsearch. [12:07.000 --> 12:09.000] You can acquire these metrics using Elasticsearch, [12:09.000 --> 12:14.000] or maybe you can show these metrics by using a dashboard, [12:14.000 --> 12:15.000] like a Prometheus, right? [12:15.000 --> 12:18.000] The Prometheus dashboard provides some metric analysis. [12:18.000 --> 12:23.000] And for these, all the external popular platforms, [12:23.000 --> 12:26.000] let's say, like Grafana or Prometheus, [12:26.000 --> 12:31.000] Apache PR6 has pre-built connectors, I would say. [12:31.000 --> 12:33.000] And for example, like Zipkin. [12:33.000 --> 12:35.000] For tracing, we have Zipping plugin. [12:35.000 --> 12:39.000] You can just enable it with just one click, [12:39.000 --> 12:47.000] and it starts to learn some metrics or traces and so on. [12:47.000 --> 12:50.000] So now, enough talking, right? [12:50.000 --> 12:53.000] I can show something in real. [12:53.000 --> 12:55.000] Because we have a bunch of plugins, [12:55.000 --> 12:58.000] as I said, for the API observability, [12:58.000 --> 13:01.000] this time I decided to choose, for my demo, [13:01.000 --> 13:03.000] Prometheus plugin. [13:03.000 --> 13:05.000] Because with respect to Fabian, [13:05.000 --> 13:09.000] and I really like Prometheus and Grafana integration, [13:09.000 --> 13:11.000] now I will show you how you can easily enable [13:11.000 --> 13:14.000] this observability very fast. [13:14.000 --> 13:16.000] For that, I mean, you can have a look. [13:16.000 --> 13:19.000] That is my report, api6.net docker. [13:19.000 --> 13:23.000] It shows all the use cases of API GitHub in one report. [13:23.000 --> 13:27.000] And it has a branch called the API observability. [13:27.000 --> 13:29.000] If you navigate this branch, [13:29.000 --> 13:33.000] you will see a real example of some plugins, [13:33.000 --> 13:37.000] how to enable it, and you can have a hands-on exercises. [13:37.000 --> 13:41.000] Now, let me switch to my VS code. [13:41.000 --> 13:43.000] I'm using the VS code today for the session. [13:43.000 --> 13:48.000] But I'm talking about this repository. [13:48.000 --> 13:50.000] It has a five branch. [13:50.000 --> 13:52.000] You can learn some of the branch, [13:52.000 --> 13:54.000] like how you can enable health check, [13:54.000 --> 13:57.000] start from health check, and API observability. [13:57.000 --> 13:59.000] This is the starting point for you. [13:59.000 --> 14:03.000] And then it's very fast to spin up this project, [14:03.000 --> 14:06.000] because it uses docker-compose. [14:06.000 --> 14:11.000] And we are using, for the backend, api6.net, [14:12.000 --> 14:14.000] you can use Java project. [14:14.000 --> 14:16.000] It doesn't matter. You can use Python. [14:16.000 --> 14:18.000] I'm actually a Java developer, [14:18.000 --> 14:23.000] but I like to encourage myself to learn new languages. [14:23.000 --> 14:25.000] I start to learn C-sharp, [14:25.000 --> 14:28.000] and this small project on .net. [14:28.000 --> 14:32.000] So if you do some docker-compose app, [14:32.000 --> 14:34.000] docker-api6, of course, [14:34.000 --> 14:36.000] it will bring some containers, right? [14:36.000 --> 14:38.000] All useful containers, as you can see, [14:38.000 --> 14:40.000] like Prometheus, Grafana. [14:40.000 --> 14:43.000] We have a product API that is with .net. [14:43.000 --> 14:46.000] I have a small endpoint that maybe returns [14:46.000 --> 14:49.000] some list of products when you call this endpoint. [14:49.000 --> 14:52.000] As you can see, it's very simple here. [14:52.000 --> 14:55.000] When I do this, it returns... [14:55.000 --> 14:58.000] Let me maybe make it bigger here. [14:58.000 --> 15:00.000] It returns a MacBook price [15:00.000 --> 15:02.000] and some other product price. [15:02.000 --> 15:03.000] Simple. [15:03.000 --> 15:06.000] And also, I'm using Windows on my machine, [15:06.000 --> 15:11.000] some of the necessary containers are up and running [15:11.000 --> 15:13.000] in one kind of docker-compose app. [15:13.000 --> 15:17.000] Then if you open the project code [15:17.000 --> 15:21.000] on your favorite IDEA or IDEA tool, right? [15:21.000 --> 15:24.000] In my case, let's say VS Code, [15:24.000 --> 15:27.000] and you can see on the Commons folder [15:27.000 --> 15:29.000] some common line examples [15:29.000 --> 15:31.000] that I'm going to show today. [15:31.000 --> 15:35.000] First thing, how you can enable this Grafana [15:35.000 --> 15:37.000] or Prometheus, Zipkin, and so on. [15:37.000 --> 15:41.000] With API Gateway, you need to create your first upstream. [15:41.000 --> 15:43.000] If you navigate this here, [15:43.000 --> 15:45.000] you can see some kind of command. [15:45.000 --> 15:48.000] Of course, you can use a dashboard to create this upstream. [15:48.000 --> 15:49.000] It's up to you. [15:49.000 --> 15:53.000] If you're like a hard worker developer like me, [15:53.000 --> 15:55.000] you can just use the kind of commands. [15:55.000 --> 15:57.000] What we are doing here, as you can see, [15:57.000 --> 15:59.000] I had a product API, right? [15:59.000 --> 16:02.000] And then I am creating upstream. [16:02.000 --> 16:07.000] And upstream means just a set of backend API endpoints. [16:07.000 --> 16:10.000] And I have one single node, one node. [16:10.000 --> 16:11.000] You can have multiple nodes. [16:11.000 --> 16:15.000] You can have multiple instance of the same product API. [16:15.000 --> 16:21.000] For the simple case, I'm just creating this one upstream [16:21.000 --> 16:22.000] and one node. [16:22.000 --> 16:24.000] Let's jump into maybe terminal. [16:24.000 --> 16:29.000] I can open some new terminal here to run this code. [16:29.000 --> 16:33.000] So I'm using VSL, [16:33.000 --> 16:37.000] because on Windows it's a little bit difficult to run a Linux code. [16:37.000 --> 16:41.000] So let me open maybe one more terminal on the Ubuntu. [16:41.000 --> 16:43.000] There we go. [16:43.000 --> 16:44.000] I hope it's visible. [16:44.000 --> 16:49.000] And if I just click and press Enter, [16:49.000 --> 16:51.000] now I set API 6. [16:51.000 --> 16:53.000] Please create the upstream service. [16:53.000 --> 16:58.000] Register my ESP.NET Web API as a backend service. [16:58.000 --> 17:01.000] And it should have this kind of configuration. [17:01.000 --> 17:04.000] Then next step, next easy step, [17:04.000 --> 17:07.000] what I do is I need to create, [17:07.000 --> 17:10.000] let's say for prometers, I need to create a row. [17:10.000 --> 17:14.000] Because API Gateway has three very basics, [17:14.000 --> 17:16.000] like you need to create the upstream, [17:16.000 --> 17:17.000] you need to create a row, [17:17.000 --> 17:18.000] and enable some plugins. [17:18.000 --> 17:20.000] In my case, prometers plugins, right? [17:20.000 --> 17:24.000] As you can see, I have some plugins configuration on the top. [17:24.000 --> 17:25.000] Only single prometers. [17:25.000 --> 17:28.000] And I'm giving reference to the upstream [17:28.000 --> 17:30.000] that in the previous step we created. [17:30.000 --> 17:31.000] And that's all. [17:31.000 --> 17:34.000] Like I'm saying also, URI, [17:34.000 --> 17:40.000] for the row to find out which URI this plugin should absorb. [17:40.000 --> 17:43.000] I'm saying fresh API slash products. [17:43.000 --> 17:44.000] Here we go. [17:44.000 --> 17:49.000] And then if I get this command and press and put it to terminal, [17:49.000 --> 17:52.000] now I will enable this plugin very fast. [17:52.000 --> 17:55.000] An API six admin is saying, [17:55.000 --> 17:58.000] okay, now you have a row, you have upstream, [17:58.000 --> 17:59.000] now it's time to test. [17:59.000 --> 18:03.000] Prometers plugin, I enabled like this couple of steps, right? [18:03.000 --> 18:06.000] You see the five seconds or six seconds, it's all. [18:06.000 --> 18:08.000] But compared to Java projects, [18:08.000 --> 18:10.000] how you enable prometers also, [18:10.000 --> 18:12.000] maybe a little bit compared to the same steps. [18:12.000 --> 18:16.000] But this API Gateway, you are just extracting [18:16.000 --> 18:19.000] a little bit of huge work to separate service. [18:19.000 --> 18:21.000] And it's highly scalable. [18:21.000 --> 18:24.000] That's one of the advantages of using API Gateway, right? [18:24.000 --> 18:26.000] For your observability. [18:26.000 --> 18:30.000] And next, for example, I can generate some metrics [18:30.000 --> 18:34.000] by calling my maybe API into point several times, [18:34.000 --> 18:36.000] maybe like this. [18:36.000 --> 18:40.000] As you can see, it's responding me with the product list [18:40.000 --> 18:41.000] in the response. [18:41.000 --> 18:43.000] Maybe I can do it one more time. [18:43.000 --> 18:46.000] So we have some data on it. [18:46.000 --> 18:51.000] And now, if I navigate to... [18:51.000 --> 18:54.000] Maybe if I can request all the prometers metrics [18:54.000 --> 18:57.000] to see some result, right, in this output, [18:57.000 --> 19:01.000] I can run another command, maybe like this. [19:01.000 --> 19:02.000] Here we go. [19:02.000 --> 19:04.000] As you can see, metrics are enabled. [19:04.000 --> 19:06.000] I can see some metrics, HTTP metrics, [19:06.000 --> 19:09.000] plus some API six metrics, as you can see. [19:09.000 --> 19:12.000] If you have API six HTTP status, [19:12.000 --> 19:16.000] it was 200 returned and was fine. [19:16.000 --> 19:21.000] And, of course, it looks like a little bit ugly, right? [19:21.000 --> 19:25.000] Now, you can see even maybe these metrics on the dashboard. [19:25.000 --> 19:29.000] Just navigate to localhosts-targets, [19:29.000 --> 19:31.000] because we are running on localhost. [19:31.000 --> 19:33.000] When you deploy maybe to the cloud, [19:33.000 --> 19:35.000] you will have a domain and so on. [19:35.000 --> 19:39.000] But as you can see on the prometers, if I refresh it, [19:39.000 --> 19:43.000] you will have soon now some metrics on it. [19:43.000 --> 19:48.000] Of course, you can specify some parameters for your metrics. [19:48.000 --> 19:49.000] And let me... [19:49.000 --> 19:51.000] We need to maybe a little bit wait [19:51.000 --> 19:56.000] to be enabled these metrics on the UI. [19:56.000 --> 19:57.000] Yeah. [19:57.000 --> 19:59.000] Let me check the targets. [19:59.000 --> 20:01.000] It's unhealthy. [20:01.000 --> 20:06.000] Maybe we need to do some local compost down and up. [20:06.000 --> 20:08.000] Every time when it comes to demo, something fails. [20:08.000 --> 20:11.000] It's unexpected, not expected. [20:11.000 --> 20:13.000] Docker compost down. [20:13.000 --> 20:16.000] Maybe I will do this trick. [20:16.000 --> 20:22.000] And maybe then an up in a moment. [20:22.000 --> 20:23.000] Yep. [20:23.000 --> 20:24.000] And here we go. [20:24.000 --> 20:31.000] If I do up, it will bring and refresh some Docker stuff. [20:31.000 --> 20:33.000] This Docker always is kind of a issue. [20:33.000 --> 20:37.000] Now, if I do this, targets should be... [20:37.000 --> 20:38.000] No, no. [20:38.000 --> 20:39.000] It's still yes. [20:39.000 --> 20:40.000] It's stopping. [20:40.000 --> 20:41.000] Yes. [20:41.000 --> 20:42.000] Now we are in an upstate. [20:42.000 --> 20:45.000] And then let me also generate some logs once again. [20:45.000 --> 20:48.000] Or even it should be visible now. [20:48.000 --> 20:50.000] Let me go. [20:50.000 --> 20:53.000] API 6. [20:53.000 --> 20:57.000] HTTP status, if I have any. [20:57.000 --> 21:02.000] Or even you can see any traces, any metrics here. [21:02.000 --> 21:05.000] As you can see, I can even see ETCD. [21:05.000 --> 21:08.000] ETCD has a storage for the API 6. [21:08.000 --> 21:12.000] What kind of data exchanging between API 6 and the storage? [21:12.000 --> 21:13.000] And so on. [21:13.000 --> 21:16.000] I mean, you can filter out all the metrics you want. [21:16.000 --> 21:18.000] And even you can see in the graph. [21:18.000 --> 21:20.000] If it's not enough on a promises dashboard, [21:20.000 --> 21:22.000] you can connect with Grafana, right? [21:22.000 --> 21:24.000] Very easy. [21:24.000 --> 21:27.000] We have an API 6 Grafana dashboard. [21:27.000 --> 21:32.000] You can easily integrate also these logs and metrics [21:32.000 --> 21:34.000] by visualizing them. [21:34.000 --> 21:36.000] So with it, that was a very easy demo. [21:36.000 --> 21:38.000] I think we can continue. [21:38.000 --> 21:41.000] If you're interested in that, you can play with other plugins [21:41.000 --> 21:43.000] straightforward. [21:43.000 --> 21:48.000] And now maybe we can switch to my presentation. [21:48.000 --> 21:50.000] And maybe if you have any questions, [21:50.000 --> 21:53.000] we can jump into question presentation [21:53.000 --> 21:55.000] because we are already running out of time. [21:55.000 --> 21:58.000] Here are some references I'm giving out to you. [21:58.000 --> 22:00.000] For you. [22:00.000 --> 22:03.000] Yep. [22:03.000 --> 22:05.000] Any questions? [22:05.000 --> 22:06.000] OK, thanks. [22:06.000 --> 22:07.000] Thanks a lot. [22:07.000 --> 22:21.000] So, I have one more t-shirt. [22:21.000 --> 22:25.000] Yeah, I have a question regarding the plugins. [22:25.000 --> 22:30.000] For instance, with traffic, you have to kind of connect it [22:30.000 --> 22:33.000] to pilot and download them as it starts. [22:33.000 --> 22:36.000] How do you develop custom plugins for API 6 [22:36.000 --> 22:40.000] and how do you package them with the API gateway? [22:40.000 --> 22:42.000] Sorry, once again, last few sentences. [22:42.000 --> 22:44.000] There was a door is open. [22:44.000 --> 22:45.000] Sure. [22:45.000 --> 22:47.000] I was just wondering about plugin development, [22:47.000 --> 22:51.000] like how rich is the ecosystem for API 6. [22:51.000 --> 22:54.000] And if I were to develop a plugin, [22:54.000 --> 22:58.000] is it easy to package with the binary [22:58.000 --> 23:01.000] or do I have to connect to some kind of pilot [23:01.000 --> 23:02.000] and it downloads it? [23:02.000 --> 23:03.000] Yeah, very nice question. [23:03.000 --> 23:04.000] I love it. [23:04.000 --> 23:05.000] Very nice question. [23:05.000 --> 23:07.000] Yeah, it's very straightforward [23:07.000 --> 23:11.000] because we have now support for five different languages. [23:11.000 --> 23:15.000] If you are using this support program in English, [23:15.000 --> 23:16.000] we have plugin runners. [23:16.000 --> 23:18.000] You don't have to build anything. [23:18.000 --> 23:20.000] You can just run. [23:20.000 --> 23:23.000] Of course, you need to create some binaries for Java, [23:23.000 --> 23:25.000] let's say, Java file. [23:25.000 --> 23:27.000] And this Java file has a connection [23:27.000 --> 23:29.000] by using Unix socket files. [23:29.000 --> 23:32.000] It can communicate with Unix socket files [23:32.000 --> 23:34.000] and you can exchange some log data. [23:34.000 --> 23:36.000] I mean, the request data. [23:36.000 --> 23:38.000] I had another presentation also. [23:38.000 --> 23:41.000] Maybe I can share with you after the session [23:41.000 --> 23:43.000] about how to write in Java plugin, [23:43.000 --> 23:46.000] how to create plugin maybe in Python and so on. [23:46.000 --> 23:48.000] This is a t-shirt for you. [23:48.000 --> 23:50.000] So I will keep it. [23:50.000 --> 23:51.000] More questions? [23:51.000 --> 23:53.000] But I don't have a t-shirt. [23:53.000 --> 23:54.000] Hello. [23:54.000 --> 23:57.000] How do you compare API 6 to other API gateways [23:57.000 --> 24:00.000] like Gravity, Kong, or... [24:00.000 --> 24:02.000] Which API gateways again? [24:02.000 --> 24:08.000] How do you compare API 6 to other API gateways on the market? [24:08.000 --> 24:11.000] How do I compare or... [24:11.000 --> 24:13.000] What's its main selling point? [24:13.000 --> 24:15.000] Sorry, once again. [24:15.000 --> 24:16.000] What's its main selling point? [24:16.000 --> 24:22.000] Why is it better than other API gateways? [24:22.000 --> 24:25.000] Code coverage, do you mean? [24:25.000 --> 24:29.000] Compared to the others, I think it's a little bit... [24:29.000 --> 24:32.000] I think it would be a little bit hard to listen from that. [24:32.000 --> 24:34.000] I will come to... [24:34.000 --> 24:37.000] There's a lot of API gateways on the market. [24:37.000 --> 24:38.000] Yes, yes. [24:38.000 --> 24:40.000] Why is API 6... [24:40.000 --> 24:41.000] Oh, do you mean benchmarking? [24:41.000 --> 24:43.000] Ah, okay, I got it. [24:43.000 --> 24:46.000] I'm not, of course, trying to sell API 6, right? [24:46.000 --> 24:47.000] Even if I have a t-shirt. [24:47.000 --> 24:48.000] I'm just giving out a t-shirt. [24:48.000 --> 24:50.000] I'm an open source contributor [24:50.000 --> 24:55.000] because one reason is it provides hot reloading of plugins. [24:55.000 --> 24:57.000] You don't have to stop your instance. [24:57.000 --> 24:59.000] You don't have to stop the instance. [24:59.000 --> 25:03.000] You can just run these plugins on the fly. [25:03.000 --> 25:05.000] You can switch off one plugin. [25:05.000 --> 25:09.000] You can write your custom plugin enable while this API 6 instance is running. [25:09.000 --> 25:13.000] This is one of the advantages that any other API gateways they don't provide. [25:13.000 --> 25:16.000] And the performance is on the top now [25:16.000 --> 25:18.000] compared to com API gateway. [25:18.000 --> 25:20.000] Our performance is high, twice faster. [25:20.000 --> 25:22.000] You can check it out. [25:22.000 --> 25:24.000] And we have... [25:24.000 --> 25:28.000] API 6 not only has API gateway, it has also English controller. [25:28.000 --> 25:31.000] You can use it for Kubernetes English controller [25:31.000 --> 25:34.000] or even you can extend it to a service mesh [25:34.000 --> 25:36.000] for your Kubernetes services. [25:36.000 --> 25:38.000] That's one of the advantages. [25:38.000 --> 25:41.000] But these advantages also exist, of course. [25:41.000 --> 25:43.000] It is open source, too. [25:43.000 --> 25:44.000] Yeah. [25:44.000 --> 25:46.000] I hope I could answer. [25:46.000 --> 25:48.000] Sorry, it was a little bit hard to listen to. [25:48.000 --> 25:50.000] Okay. [25:50.000 --> 25:56.000] Could you please elaborate a little bit on the scalability of those plugins? [25:56.000 --> 25:58.000] It would be nice. [25:58.000 --> 26:01.000] You're worrying about how it's scalable, right? [26:01.000 --> 26:04.000] How much it can carry? [26:04.000 --> 26:06.000] How much observations can be done? [26:06.000 --> 26:08.000] Good question. [26:08.000 --> 26:10.000] You can enable multiple plugins. [26:10.000 --> 26:14.000] It's this up to you how many plugins you would like to use. [26:14.000 --> 26:19.000] And there should be some problems when it comes to millions, [26:19.000 --> 26:21.000] maybe billions of API calls. [26:21.000 --> 26:24.000] That's why we have different deployment modes. [26:24.000 --> 26:28.000] For example, you can deploy API 6 as a standalone [26:28.000 --> 26:33.000] or maybe you can deploy with multiple API 6 instance one storage. [26:33.000 --> 26:37.000] Or one API 6, different types of storage. [26:37.000 --> 26:42.000] Because ITCD is compared to other relational database, [26:42.000 --> 26:45.000] non-relational database, super fast to first data. [26:45.000 --> 26:49.000] That's why it's also easy to deploy in many places. [26:49.000 --> 26:52.000] That's scalable without any issue. [26:52.000 --> 26:55.000] Yeah. [26:55.000 --> 26:58.000] Does it make sense? [26:58.000 --> 27:00.000] Yeah, just a quick question. [27:00.000 --> 27:04.000] I saw there you had API 6 EngineX. [27:04.000 --> 27:08.000] Is EngineX the underlying API gateway? [27:08.000 --> 27:12.000] And API 6 sits on top of it and expands the capabilities of it. [27:12.000 --> 27:15.000] Because EngineX is quite limited in that. [27:15.000 --> 27:16.000] Yeah, true. [27:16.000 --> 27:20.000] EngineX is the root of the API 6. [27:20.000 --> 27:23.000] It's built on the top of EngineX. [27:23.000 --> 27:26.000] But it provides additional features, right? [27:26.000 --> 27:30.000] Yeah. [27:30.000 --> 27:32.000] We have one more question. [27:32.000 --> 27:34.000] I'll try to make it short. [27:34.000 --> 27:39.000] Can API 6 work with GraphQL APIs? [27:39.000 --> 27:40.000] Yes. [27:40.000 --> 27:43.000] GraphQL, I think nowadays became very popular also. [27:43.000 --> 27:44.000] Sorry. [27:44.000 --> 27:47.000] I think Nikola also had the talk about tracing, right? [27:47.000 --> 27:51.000] He has some of the talks about this GraphQL. [27:51.000 --> 27:55.000] We are improving, we're contributing more now, [27:55.000 --> 27:57.000] massively on the GraphQL. [27:57.000 --> 28:00.000] My answer is it's possible, yes. [28:00.000 --> 28:03.000] You can try it out. [28:03.000 --> 28:06.000] Any other questions? [28:06.000 --> 28:07.000] OK. [28:07.000 --> 28:09.000] Thanks a lot, everyone. [28:09.000 --> 28:10.000] Thank you for coming. [28:10.000 --> 28:11.000] Thank you.