Запуск мікросервісу локально
До появи архітектури мікросервісів команди розробників створювали, розгортали та запускали весь застосунок як один великий шматок програмного забезпечення. Щоб перевірити невелику зміну в їхньому модулі не тільки за допомогою юніт-тестування, розробникам доводилося збирати всю програму. Тому збірки займали велику кількість часу. Після збірки розробники розгортали свою версію застосунку на тестовому сервері. Розробники запускали сервер або на віддаленій машині, або на своєму локальному компʼютері. В останньому випадку розробникам доводилося встановлювати та управляти досить складним середовищем на своєму локальному компʼютері.
В еру архітектури мікросервісів розробники пишуть, збирають, тестують і запускають маленькі програмні сервіси. Збірки швидкі. Завдяки сучасним фреймворкам, таким як Node.js, немає потреби встановлювати та управляти складними серверними середовищами для тестування одного сервісу, оскільки сервіс працює як звичайний процес. Вам не потрібно розгортати свій сервіс в якесь середовище лише для тестування, тому ви просто збираєте свій сервіс і відразу запускаєте його на своєму локальному компʼютері.
Цей модуль охоплює різні аспекти, що стосуються розробки одного сервісу на локальному компʼютері. Вам не потрібно писати код. Натомість ви будете будувати, запускати та тестувати наявний сервіс: ratings
.
Сервіс ratings
— це невеликий вебзастосунок, написаний на Node.js, який може працювати самостійно. Він виконує схожі дії на інші вебзастосунки:
- Слухає порт, який він отримує як параметр.
- Очікує
HTTP GET
запити на шляху/ratings/{productID}
і повертає рейтинги продукту, що відповідає значеннюproductID
, зазначеному клієнтом. - Очікує
HTTP POST
запити на шляху/ratings/{productID}
і оновлює рейтинги продукту, що відповідає значеннюproductID
, зазначеному вами.
Виконайте ці кроки, щоб завантажити код програми, встановити її залежності та запустити її локально:
Завантажте код сервісу та файл пакету в окрему теку:
$ mkdir ratings $ cd ratings $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/ratings.js -o ratings.js $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/ratings/package.json -o package.json
Ознайомтесь із кодом сервісу і зверніть увагу на такі елементи:
- Особливості вебсервера:
- прослуховування порту
- обробка запитів і відповідей
- Аспекти, що стосуються HTTP:
- заголовки
- шлях
- код статусу
- Особливості вебсервера:
Застосунки Node.js написані на JavaScript, що означає відсутність явного етапу компіляції. Натомість вони використовують компіляцію в режимі реального часу. Щоб зібрати застосунок Node.js, потрібно встановити його залежності. Встановіть залежності сервісу
ratings
у тій же теці, де ви зберегли код сервісу та файл пакета:$ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN ratings No description npm WARN ratings No repository field. npm WARN ratings No license field. added 24 packages in 2.094s
Запустіть сервіс, передаючи
9080
як параметр. Програма буде слухати на порту 9080.$ npm start 9080 > @ start /tmp/ratings > node ratings.js "9080" Server listening on: http://0.0.0.0:9080
Відкрийте http://localhost:9080/ratings/7 у вашому оглядачі або отримайте доступ до
ratings
за допомогою командиcurl
з іншого вікна термінала:$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
Використовуйте метод
POST
командиcurl
, щоб встановити рейтинги для продукту на1
:$ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}' {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
Перевірте оновлені рейтинги:
$ curl localhost:9080/ratings/7 {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
Використовуйте
Ctrl-C
у терміналі, що виконує сервіс, щоб зупинити його.
Вітаємо, ви тепер можете будувати, тестувати та запускати сервіс на своєму локальному компʼютері!
Ви готові упакувати сервіс у контейнер.