Java микросервистерин которуу жана адаптациялоо : Практикалык колдонмо . Жол көрсөткүчтүн биринчи бөлүгүнө шилтеме . Сервер тараптагы 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 сценарийлери.
Java микросервистерин жайылтуу үчүн Dockerди кантип колдонсо болот
Келгиле, тандоонун таттуу азабына кайрылалы. Бир нече жыл мурун Докер окуя болгон жерге келип, аны менен контейнерлешти. Эгер сиз аны менен эч качан иштебесеңиз, бул жерде акыркы колдонуучуларга жана иштеп чыгуучуларга багытталган кыскача сүрөттөмө:- Контейнер (жөнөкөйлөштүрүлгөн) эски виртуалдык машинага окшош, бирок "жеңorрээк". Эгер сиз бул контекстте "жеңorрээк" деген эмнени билдирерин түшүнбөсөңүз, Stackoverflow боюнча бул жоопту текшериңиз .
- Контейнер өзүнүн портативдүүлүгүнө кепилдик берет. Башкача айтканда, ал каалаган жерде иштейт. Тааныш угулат, туурабы?
- 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-микросервистердин интеграциясын кантип сынай алабыз? Бүт иш процесси анын айрым бөлүктөрүн эле эмес, иштеп жатканын кантип көрө аласыз? Иш жүзүндө, сиз үч ыкманын бирин колдоно аласыз:- Бир аз иштөө менен (эгерде сиз Spring Boot сыяктуу алHowтарды колдонуп жатсаңыз), сиз бардык микросервистериңизди бир ишке киргизгич классына бириктирип, бардык микросервистерди бир Wrapper.java классы менен жүктөй аласыз - сиздин машинаңызда жетиштүү эстутум бар-жогуна жараша. аларды бардык микросервисиңизди иштетиңиз.
- Docker Swarm же Kubernetes жөндөөлөрүн жергorктүү түрдө көчүрө аласыз.
- Мындан ары интеграциялык тесттерди жергorктүү деңгээлде өткөрбөңүз. Анын ордуна, атайын DEV/TEST чөйрөсүн орнотуңуз. Бул бир нече командалар жергorктүү микросервис орнотууларынын азабына багынганда жасай турган нерсе.
GO TO FULL VERSION