Dzisiaj zdecydowanie bardziej techniczny wpis niż zwykle. Chciałem Wam przedstawić w jaki sposób skonfigurować i zautomatyzować wdrażanie chatbot’a. Dlaczego to jest istotne? Główna zaleta takiego rozwiązania to możliwość skupienia się na implementacji i rozwoju chatbota, a nie marnowanie czasu przy procesie wdrażania go.
CI/CD
CI/CD (ang. Continuous Integration/Continuous Deployment ) to bardzo popularne ostatnio określenia w IT, które opisują proces tworzenia i rozwoju oprogramowania. W skrócie proces ten oznacza:
- automatyczne budowanie aplikacji
- automatyczne przetestowanie aplikacji
- automatyczne wdrożenie aplikacji
Proces ten znacząco usprawnia implementację rozwiązania znacząco je przyspieszając i na bieżąco testując. W wyniku tego twórcy są w stanie szybciej wprowadzać zmiany, eliminować błędy czy częściej aktualizować produkt.
W tym i w kolejnych wpisach pokaże Wam jak może wyglądać taki przykładowy ‚pipeline’. Pominę tu jednak etap testowania, bo to jest temat na inny wpis, szerzej poświecony testowaniu chatbotów.
Komponenty
Bot framework – Jest ono stworzone przez Microsoft i, jak można się łatwo domyślić, wdrożenie jest silnie powiązane z chmurą Microsoft Azure. Jest ono przeznaczone do implementacji zaawansowanych chatbotów w jednej z dwóch technologii – .NET lub Node.js. Ja w tej serii wpisów zaimplementuje chatbota w Node.js.
BitBucket– jest to jeden z dostępnych na rynku hostingów zdalnych repozytoriów w Git’cie. Dlaczego akurat BitBucket? Z prozaicznych powodów – UI bardziej mi odpowiada, niż w przypadku GitHuba, a z powodów ekonomicznych – mamy nieograniczoną liczbę prywatnych repozytoriów w wersji darmowej.
CircleCI – żaden pipeline wdrożeniowy nie może istnieć bez Build Servera, czyli usługi, która potrafi zbudować i przetestować naszą aplikację pobierając aktualny kod źródłowy. Ja zdecydowałem się na CircleCI z kilku powodów, m.in. posiada integrację z BitBucketem, dla prostego projektu mamy darmowe 1500 minut budowania miesięcznie oraz posiada integrację z Docker’em.
Heroku – to platforma do hostowania aplikacji w chmurze. Umożliwia łatwy deployment oraz skalowanie produktu, a zwalnia twórce z konieczności dbania o serwery i infrastrukturę. Wybrałem Heroku, ponieważ CircleCI posiada wbudowaną integrację z tą platformą, a ponadto hosting jest darmowy dla jednego projektu.
Docker – to coraz bardziej popularne w ostatnim czasie narzędzie do wirtualizacji aplikacji. Dzięki niemu jesteśmy w stanie uruchomić aplikację w tzw. kontenerze – warstwie odizolowanej od innych procesów i stanowiącej odrębne środowisko uruchomieniowe. Zaletą konteneryzacji nad wirtualizacją jest brak konieczności emulowania warstwy sprzętowej i systemu operacyjnego. Ja wykorzystam Docker’a do budowania oraz uruchomienia chatbot’a.
Jak to działa?
Przykładowy ‚pipeline’ wdrożeniowy, który Wam przedstawię w skrócie wygląda następująco:
- Bot stworzony zostanie za pomocą framework’a Bot Framework
- Po implementacji kod jest commitowany do repozytorium
- CircleCI zostaje poinformowany o nowej wersji kodu i rozpoczyna budowanie aplikacji
- Aplikacja budowana jest z wykorzystaniem Docker’a
- Kontener Docker’owy wdrażany jest na Heroku
PS. Aby bot był w stanie odpowiadać należy go zarejestrować, a zrobić to można uruchamiając serwis na Azurze (o tym też napiszę kilka słów).
Co dalej?
W kolejnym wpisie opiszę jak stworzyć prostego chatbota z wykorzystaniem framework’a Microsoftu w technologii Node.js. Stworzymy wspólnie prostego chatbota i przetestujemy go wykorzystując Bot Framework Emulator, a przy okazji wrzucimy nasz kod do publicznego repozytorium na BitBuckecie.
Do zobaczenia!
Komentarz