Java микросервистерін аудару және бейімдеу : практикалық нұсқаулық . Нұсқаулықтың бірінші бөлігіне сілтеме . Кез келген serverлік Java бағдарламасы, демек, кез келген микросервис .jar немесе .war кеңейтімі бар файл ғана. Java экожүйесі, дәлірек айтсақ, JVM туралы бір керемет нәрсе бар: Java codeын бір рет жазу керек және ол кез келген дерлік операциялық жүйеде жұмыс істей алады, егер сіз codeты Java бағдарламасының жаңа нұсқасымен құрастырмаған болсаңыз. мақсатты JVM нұсқасы. Мұны түсіну маңызды, әсіресе Docker, Kubernetes немесе (барабан орамы!) The Cloud сияқты тақырыптарға келгенде. Неліктен? Әр түрлі орналастыру сценарийлерін қарастырайық.
Минималистік Java микросервисін орналастыру мысалы
Банктік мысалмен жалғастырайық. Сонымен, бізде monobank.jar файлы (монолит) және жаңадан алынған riskengine.jar (қауіпті тексерудің бірінші микросервисі) бар. Әлемдегі кез келген басқа қолданба сияқты екі қолданбаға да .properties файлы қажет деп есептейік. Біздің жағдайда, ол тек дерекқордың URL мекенжайын және тіркелгі деректерін қамтиды. Ең аз орналастыру келесідей көрінетін екі каталогтан тұруы мүмкін: Бірінші:
-r-r------ 1 ubuntu ubuntu 2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 monobank-384.jar
ubuntu@somemachine:/var/www/www.monobank.com/java$ java -jar monobank-384.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
Екіншісі:
-r-r------ 1 ubuntu ubuntu 2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 risk-engine-1.jar
ubuntu@someothermachine:/var/www/risk.monobank.com/java$ java -jar risk-engine-1.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
Бұл сұрақты ашық қалдырады: .properties және .jar файлдары serverге қалай түседі? Өкінішке орай, көптеген жауаптар болуы мүмкін.
Java микросервистерін орналастыру үшін құрастыру құралдарын, SSH және Ansible қолданбаларын қалай пайдалануға болады
Жалықтыратын, бірақ Java микросервистерін қолдану бойынша тамаша кеңес... Шындығында, соңғы 20 жыл ішінде жүйелік әкімшілер кез келген Java serverлік бағдарламаларын компанияларда дәл солай орналастырған. Бұл қоспасы:- сүйікті құрастыру құралы (Maven, Gradle)
- .jars serverлерге көшіру үшін жақсы ескі SSH/SCP
- Қолдану сценарийлері мен serverлерін басқаруға арналған Bash сценарийлері
- немесе одан да жақсырақ: кейбір Ansible сценарийлері.
Java микросервистерін қолдану үшін Docker қалай пайдалануға болады
Таңдаудың тәтті азабына оралайық. Бірнеше жыл бұрын Докер оқиға орнына келді және онымен контейнерлеу. Егер сіз онымен ешқашан жұмыс істемеген болсаңыз, мұнда соңғы пайдаланушылар мен әзірлеушілерге арналған қысқаша сипаттама берілген:- Контейнер (жеңілдетілген) ескі виртуалды машинаға ұқсас, бірақ «жеңілірек». Егер сіз осы контексте «жеңіл» дегеннің нені білдіретінін түсінбесеңіз, Stackoverflow сайтында осы жауапты қараңыз .
- Контейнер өзінің тасымалдау мүмкіндігіне кепілдік береді. Яғни, ол кез келген жерде жұмыс істейді. Таныс естіледі, солай емес пе?
- jar файлыңызды Docker кескініне біріктіріңіз
- бұл кескінді жеке Docker тізіліміне итеріңіз
- осы кескінді мақсатты платформаңызда тартыңыз және іске қосыңыз
- немесе Docker кескінін тікелей өндірістік жүйеге көшіріп, оны іске қосыңыз.
Java микросервистерін қолдану үшін Docker Swarm немесе Kubernetes қалай пайдалануға болады
Сіз Docker қолданбасын сынап көруді шештіңіз делік. Java микросервисін қолданған сайын .jar файлын жинақтайтын Docker кескінін жасайсыз. Сізде осы Java микросервистерінің бірнешеуі бар делік және сіз бұл қызметтерді бірнеше машиналарда (кластерде) орналастырғыңыз келеді. Сұрақ туындайды: бұл кластерді қалай басқаруға болады? Docker контейнерлерін іске қосыңыз, өнімділікті тексеріңіз, жаңартуларды орналастырыңыз, жүйені масштабтаңыз (brrr)? Бұл сұраққа екі ықтимал жауап - Docker Swarm және Kubernetes. Екі опция туралы егжей-тегжейлі қарастыру бұл ұзақ оқулықты тым ұзақ етеді, бірақ біз екі нұсқа да кластерді басқару үшін YAML файлдарын ( Yaml шегініс оқиғаларын қараңыз) жазуыңызға байланысты екенін атап өткен жөн деп ойлаймыз. Бұл іс жүзінде қандай сезім тудыратынын білгіңіз келсе, Twitter іздеуіне ұқсас сұрауды теріңіз. Сонымен, Java микросервистерін орналастыру процесі енді келесідей көрінеді:- Docker Swarm/Kubernetes конфигурациялау және басқару
- Docker үшін барлық қадамдар (жоғарыдан қараңыз)
Барлығы жұмыс істегенше көзіңіз қанғаншаYAML жазыңыз және орындаңыз .
Java микросервистерін қалай тексеруге болады
Сіз микросервистерді өндіріске енгізуді шештіңіз делік. Әзірлеу кезінде n-микросервистердің интеграциясын қалай тексеруге болады? Оның бөліктері ғана емес, бүкіл жұмыс процесі жұмыс істеп тұрғанын қалай көруге болады? Іс жүзінде сіз үш әдістің бірін пайдалана аласыз:- Кішкене жұмыс арқылы (егер сіз Spring Boot сияқты фреймворктарды пайдалансаңыз) барлық микросервистерді бір іске қосу класына біріктіріп, бір Wrapper.java сыныбы арқылы барлық микросервистерді жүктей аласыз – компьютерде жадтың жеткілікті болуына байланысты. оларды барлық микросервистерді іске қосыңыз.
- Docker Swarm немесе Kubernetes параметрлерін жергілікті түрде көшіруге болады.
- Енді интеграциялық сынақтарды жергілікті түрде орындамаңыз. Оның орнына арнайы DEV/TEST ортасын орналастырыңыз. Бұл жергілікті микросервистерді орнатудың ауыртпалығына ұшыраған кезде көптеген командалар іс жүзінде жасайтын нәрсе.
GO TO FULL VERSION