JavaRush /Java блогы /Random-KK /Java микросервистеріне арналған нұсқаулық. 2-бөлім: Орнал...

Java микросервистеріне арналған нұсқаулық. 2-бөлім: Орналастыру және сынақтан өткізу

Топта жарияланған
Java микросервистерін аудару және бейімдеу : практикалық нұсқаулық . Нұсқаулықтың бірінші бөлігіне сілтеме . Java микросервистеріне арналған нұсқаулық.  2-бөлім: Орналастыру және сынақтан өткізу - 1Кез келген 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 сценарийлері.
Әрине, бұл «тыныс алу» бұлтын қажет ететін инноваторларға, жүктемені автоматты түрде теңестіретін serverлерге және т.б. Бұл нағыз қызықсыз ескі мектеп. Дегенмен ол жұмыс істейді!

Java микросервистерін қолдану үшін Docker қалай пайдалануға болады

Таңдаудың тәтті азабына оралайық. Бірнеше жыл бұрын Докер оқиға орнына келді және онымен контейнерлеу. Егер сіз онымен ешқашан жұмыс істемеген болсаңыз, мұнда соңғы пайдаланушылар мен әзірлеушілерге арналған қысқаша сипаттама берілген: Java микросервистеріне арналған нұсқаулық.  2-бөлім: Орналастыру және сынақтан өткізу - 2JVM портативтілігі мен кері үйлесімділігін ескере отырып, бұл мүмкіндік онша артықшылыққа ұқсамайтыны қызық. JVM.zip файлын кез келген Raspberry Pi-ге (немесе тіпті ұялы телефонға) жүктеп алып, оны шығарып, кез келген .jar файлын іске қосуға болады. Жағдай PHP немесе Python сияқты тілдерде өзгереді, мұнда нұсқалардың үйлесімсіздігі немесе орналастыру параметрлері күрделірек. Немесе сіздің Java қолданбаңыз көптеген басқа орнатылған қызметтерге (дұрыс нұсқа нөмірлерімен) тәуелді болса: мысалы, Postgres дерекқоры немесе Redis кілтінің мәндер қоймасы. Сонымен, Docker for Java микросервистерінің, дәлірек айтқанда Java қолданбаларына арналған негізгі артықшылығы мынада: Testcontainers сияқты құралдарды пайдаланып біртекті тестілеу немесе интеграциялық орталарды орнату мүмкіндігі . Күрделі әзірлемелерді орнату оңайырақ. Discourse форумының бағдарламалық құралын алыңыз . Сіз оны бір Docker кескінімен орнатуға болады және онда Ruby тілінде жазылған Discourse бағдарламалық жасақтамасынан Postgres дерекқорына, Redis және ас үй раковинасына дейін қажет нәрсенің барлығы бар. Орналастыруларыңыз ұқсас болса немесе әдемі кішкентай Oracle дерекқорын іске қосқыңыз келсе, Docker қолданбасын қолданып көріңіз. Қорытындылай келе, жай ғана .jar файлын қараудың орнына, сіз:
  • 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-микросервистердің интеграциясын қалай тексеруге болады? Оның бөліктері ғана емес, бүкіл жұмыс процесі жұмыс істеп тұрғанын қалай көруге болады? Іс жүзінде сіз үш әдістің бірін пайдалана аласыз:
  1. Кішкене жұмыс арқылы (егер сіз Spring Boot сияқты фреймворктарды пайдалансаңыз) барлық микросервистерді бір іске қосу класына біріктіріп, бір Wrapper.java сыныбы арқылы барлық микросервистерді жүктей аласыз – компьютерде жадтың жеткілікті болуына байланысты. оларды барлық микросервистерді іске қосыңыз.
  2. Docker Swarm немесе Kubernetes параметрлерін жергілікті түрде көшіруге болады.
  3. Енді интеграциялық сынақтарды жергілікті түрде орындамаңыз. Оның орнына арнайы DEV/TEST ортасын орналастырыңыз. Бұл жергілікті микросервистерді орнатудың ауыртпалығына ұшыраған кезде көптеген командалар іс жүзінде жасайтын нәрсе.
Оған қоса, Java микросервистеріне қосымша, сізге іске қосылған хабар брокері (мысалы, ActiveMQ немесе RabbitMQ) немесе электрондық пошта serverі немесе Java микросервистері бір-бірімен байланысуы қажет кез келген басқа хабар алмасу құрамдастары қажет болуы мүмкін. Бұл DevOps жағында күрделіліктің айтарлықтай төмен бағалануына әкеледі. Microservice тестілеу кітапханаларын қараңыз, олар бұл ауруды жеңілдетеді. Қалай болғанда да, бұл күрделілік бізді дәл қазір айтатын микросервистердің жалпы мәселелеріне әкеледі. Қорытынды бөлімде біз Java микросервистері туралы жалпы сұрақтарды қарастырамыз.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION