JavaRush /Java блогу /Random-KY /Java Microservices үчүн колдонмо. 2-бөлүк: Жайгаштыруу жа...

Java Microservices үчүн колдонмо. 2-бөлүк: Жайгаштыруу жана сыноо

Группада жарыяланган
Java микросервистерин которуу жана адаптациялоо : Практикалык колдонмо . Жол көрсөткүчтүн биринчи бөлүгүнө шилтеме . Java Microservices үчүн колдонмо.  2-бөлүк: Жайгаштыруу жана сыноо - 1Сервер тараптагы Java программасы, демек, ар кандай микросервис, жөн гана .jar же .war кеңейтүүсү бар файл. Java экосистемасы, тагыраак айтканда JVM жөнүндө бир сонун нерсе бар: Java codeун бир гана жолу жазышыңыз керек жана ал дээрлик бардык операциялык тутумда иштей алат, эгер сиз өзүңүздүн codeуңузду Java-нын жаңыраак versionсы менен түзө элексиз. максаттуу JVM versionсы. Муну түшүнүү маанилүү, айрыкча Докер, Кубернетес же (барабан ролу!) Булут сыяктуу темаларга келгенде. Неге? Келгиле, жайгаштыруунун ар кандай сценарийлерин карап көрөлү.

Минималдуу 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 микросервистерин жайылтуу үчүн Build Tools, SSH жана Ansible кантип колдонсо болот

Кызыксыз, бирок Java микросервистерин жайылтуу боюнча эң сонун кеңеш... Чындыгында, системалык администраторлор акыркы 20 жыл ичинде компанияларда Java serverдик программаларды орнотушкан. Бул аралашма:
  • сүйүктүү куруу куралы (Maven, Gradle)
  • .jars serverлерге көчүрүү үчүн жакшы эски SSH/SCP
  • Жайгаштыруу скрипттерин жана serverлерин башкаруу үчүн Bash скрипттери
  • же андан да жакшысы: кээ бир Ansible сценарийлери.
Албетте, бул "дем алуу" булутуна муктаж инноваторлорго, жүктү автоматтык түрдө тең салмактоосу бар serverлерге жана башкаларга ылайыктуу эмес. Бул чыныгы кызыксыз эски мектеп. Бирок ал иштейт!

Java микросервистерин жайылтуу үчүн Dockerди кантип колдонсо болот

Келгиле, тандоонун таттуу азабына кайрылалы. Бир нече жыл мурун Докер окуя болгон жерге келип, аны менен контейнерлешти. Эгер сиз аны менен эч качан иштебесеңиз, бул жерде акыркы колдонуучуларга жана иштеп чыгуучуларга багытталган кыскача сүрөттөмө: Java Microservices үчүн колдонмо.  2-бөлүк: Жайгаштыруу жана тестирлөө - 2JVMнин портативдүүлүгүн жана артка шайкештигин эске алганда, бул өзгөчөлүк андай артыкчылыкка окшобой турганы күлкүлүү. Сиз жөн гана JVM.zipди каалаган Raspberry Piге (же уюлдук телефонго) жүктөп алып, аны чыгарып, каалаган .jar файлын иштете аласыз. PHP же Python сыяктуу тилдерде абал өзгөрөт, мында versionнын шайкеш келбегендиги же жайылтуу орнотуулары татаалыраак. Же сиздин Java тиркемеңиз башка көптөгөн орнотулган кызматтардан көз каранды болсо (туура version номерлери менен): мисалы, Postgres маалымат базасы же Redis ачкыч баалуулуктар дүкөнү. Ошентип, Java микросервистери үчүн Dockerдин негизги артыкчылыгы, тагыраак айтканда Java тиркемелери үчүн бул: Testcontainers сыяктуу куралдарды колдонуу менен гомогенизацияланган тестирлөө же интеграция чөйрөлөрүн орнотуу мүмкүнчүлүгү . Татаал иштеп чыгууларды орнотуу оңой. Discourse форумунун программасын алыңыз . Сиз аны бир Docker сүрөтү менен орното аласыз жана анда Ruby тorнде жазылган Discourse программалык камсыздоосунан, Postgres маалымат базасына, Redis жана ашкана раковинасына чейин керектүү нерселердин бардыгы камтылган. Эгерде сиздин жайгаштырууларыңыз окшош болсо же жакшы кичинекей Oracle маалымат базасын иштеткиңиз келсе, Dockerди колдонуп көрүңүз. Ошентип, кыскача айтканда, .jar файлын карап отурбастан, сиз азыр:
  • jar файлыңызды Docker сүрөтүнө бириктириңиз
  • бул сүрөттү жеке Docker реестрине түртүңүз
  • тартыңыз жана бул сүрөттү максаттуу платформаңызда иштетиңиз
  • же Docker сүрөтүн түздөн-түз өндүрүш тутумуңузга көчүрүп, аны иштетиңиз.

Java микросервистерин жайылтуу үчүн Docker Swarm же Kubernetes кантип колдонсо болот

Докерди сынап көрүүнү чечтиңиз дейли. Java микросервисин орноткон сайын, сиз .jar файлыңызды бириктирген Docker сүрөтүн түзөсүз. Сизде ушул Java микросервистеринин бир нечеси бар дейли, жана сиз бул кызматтарды бир нече машиналарда (кластерде) жайылтууну каалайсыз. Суроо туулат: бул кластерди кантип башкаруу керек? Docker контейнерлерин иштетиңиз, өндүрүмдүүлүгүн текшериңиз, жаңыртууларды орнотуңуз, системаны масштабдаңыз (brrr)? Бул суроого эки мүмкүн жооп Докер Swarm жана Kubernetes болуп саналат. Эки варианттын теңине токтолсок, бул ансыз деле узун окуу куралы өтө узун болуп калат, бирок бул эки вариант тең YAML файлдарын жазууга ( Yaml чегинүү окуяларын караңыз ) кластериңизди башкарууга таянарын эске сала кетели. Эгер бул иш жүзүндө кандай сезимдерди туудурарын билгиңиз келсе, Твиттердеги издөөгө окшош суроону жазыңыз. Ошентип, Java микросервисиңизди жайылтуу процесси азыр төмөнкүдөй көрүнөт:
  • Docker Swarm/Kubernetes конфигурациялоо жана башкаруу
  • Docker үчүн бардык кадамдар (жогоруда караңыз)
  • Баары иштегенге чейин көзүңүз канганга чейин YAML жазыңыз жана аткарыңыз .

Java микросервистерин кантип сынаса болот

Микросервистерди өндүрүшкө киргизүүнү чечти дейли. Азыр иштеп чыгуу учурунда n-микросервистердин интеграциясын кантип сынай алабыз? Бүт иш процесси анын айрым бөлүктөрүн эле эмес, иштеп жатканын кантип көрө аласыз? Иш жүзүндө, сиз үч ыкманын бирин колдоно аласыз:
  1. Бир аз иштөө менен (эгерде сиз Spring Boot сыяктуу алHowтарды колдонуп жатсаңыз), сиз бардык микросервистериңизди бир ишке киргизгич классына бириктирип, бардык микросервистерди бир Wrapper.java классы менен жүктөй аласыз - сиздин машинаңызда жетиштүү эстутум бар-жогуна жараша. аларды бардык микросервисиңизди иштетиңиз.
  2. Docker Swarm же Kubernetes жөндөөлөрүн жергorктүү түрдө көчүрө аласыз.
  3. Мындан ары интеграциялык тесттерди жергorктүү деңгээлде өткөрбөңүз. Анын ордуна, атайын DEV/TEST чөйрөсүн орнотуңуз. Бул бир нече командалар жергorктүү микросервис орнотууларынын азабына багынганда жасай турган нерсе.
Кошумчалай кетсек, Java микросервистеринен тышкары, сизге иштеп жаткан билдирүү брокери (мисалы, ActiveMQ же RabbitMQ) же электрондук почта serverи же Java микросервистери бири-бири менен байланышуу үчүн керек болгон башка кабарлашуу компоненти керек болот. Бул DevOps тарабында татаалдыктын олуттуу бааланбай калышына алып келет. Микросервистин тестирлөө китепканаларын карап көрүңүз, алар бул ооруну жеңилдете алышат. Кандай болгон күндө да, бул татаалдык бизди азыр сүйлөшө турган микросервистердин жалпы көйгөйлөрүнө алып келет. Акыркы бөлүктө биз Java микросервистери жөнүндө жалпы суроолорду карайбыз.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION