Запуск мікросервісу локально

До появи архітектури мікросервісів команди розробників створювали, розгортали та запускали весь застосунок як один великий шматок програмного забезпечення. Щоб перевірити невелику зміну в їхньому модулі не тільки за допомогою юніт-тестування, розробникам доводилося збирати всю програму. Тому збірки займали велику кількість часу. Після збірки розробники розгортали свою версію застосунку на тестовому сервері. Розробники запускали сервер або на віддаленій машині, або на своєму локальному компʼютері. В останньому випадку розробникам доводилося встановлювати та управляти досить складним середовищем на своєму локальному компʼютері.

В еру архітектури мікросервісів розробники пишуть, збирають, тестують і запускають маленькі програмні сервіси. Збірки швидкі. Завдяки сучасним фреймворкам, таким як Node.js, немає потреби встановлювати та управляти складними серверними середовищами для тестування одного сервісу, оскільки сервіс працює як звичайний процес. Вам не потрібно розгортати свій сервіс в якесь середовище лише для тестування, тому ви просто збираєте свій сервіс і відразу запускаєте його на своєму локальному компʼютері.

Цей модуль охоплює різні аспекти, що стосуються розробки одного сервісу на локальному компʼютері. Вам не потрібно писати код. Натомість ви будете будувати, запускати та тестувати наявний сервіс: ratings.

Сервіс ratings — це невеликий вебзастосунок, написаний на Node.js, який може працювати самостійно. Він виконує схожі дії на інші вебзастосунки:

  • Слухає порт, який він отримує як параметр.
  • Очікує HTTP GET запити на шляху /ratings/{productID} і повертає рейтинги продукту, що відповідає значенню productID, зазначеному клієнтом.
  • Очікує HTTP POST запити на шляху /ratings/{productID} і оновлює рейтинги продукту, що відповідає значенню productID, зазначеному вами.

Виконайте ці кроки, щоб завантажити код програми, встановити її залежності та запустити її локально:

  1. Завантажте код сервісу та файл пакету в окрему теку:

    $ 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
  2. Ознайомтесь із кодом сервісу і зверніть увагу на такі елементи:

    • Особливості вебсервера:
      • прослуховування порту
      • обробка запитів і відповідей
    • Аспекти, що стосуються HTTP:
      • заголовки
      • шлях
      • код статусу
  3. Застосунки 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
  4. Запустіть сервіс, передаючи 9080 як параметр. Програма буде слухати на порту 9080.

    $ npm start 9080
    > @ start /tmp/ratings
    > node ratings.js "9080"
    Server listening on: http://0.0.0.0:9080
  1. Відкрийте http://localhost:9080/ratings/7 у вашому оглядачі або отримайте доступ до ratings за допомогою команди curl з іншого вікна термінала:

    $ curl localhost:9080/ratings/7
    {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}}
  2. Використовуйте метод POST команди curl, щоб встановити рейтинги для продукту на 1:

    $ curl -X POST localhost:9080/ratings/7 -d '{"Reviewer1":1,"Reviewer2":1}'
    {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
  3. Перевірте оновлені рейтинги:

    $ curl localhost:9080/ratings/7
    {"id":7,"ratings":{"Reviewer1":1,"Reviewer2":1}}
  4. Використовуйте Ctrl-C у терміналі, що виконує сервіс, щоб зупинити його.

Вітаємо, ви тепер можете будувати, тестувати та запускати сервіс на своєму локальному компʼютері!

Ви готові упакувати сервіс у контейнер.

Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!