Go, SpringBoot va Ballerina-da yozilgan dockerize xizmatlari - taqqoslash

Men oddiy HTTP-ga asoslangan xizmatni yozish va uni doker muhitida joylashtirish qanchalik osonligini ko'rishni istadim. Men http xizmatlarini yozish va xizmatni osongina dockerizatsiya qilish va undan keyin qanday foydalanish bo'yicha taqqoslash uchun ishlatilishi mumkin bo'lgan uchta turli tillarni / doiralarni (Go, SpringBoot, Ballerina) oldim. Ularning har biriga misollar bilan qarashga imkon bering.

Boring

Go, http asosidagi xizmatlarni yozish uchun ona tomonidan qo'llab-quvvatlanadi. Go xizmatidagi http xizmatiga misol quyida keltirilgan.

Biz quyidagi dasturni yaratamiz va ishlata olamiz.

$ go helloWorld.go qurish
$ ./helloWorld

Buni ishga tushirganimizdan so'ng biz ushbu xizmatga URL manzilidan foydalanib kirishimiz mumkin - http: // localhost: 8080 / salom

Yuqoridagi xizmatni Docker muhitida qanday joylashtirishni ko'rib chiqaylik. Yuqoridagilarni Docker muhitida joylashtirish uchun to'g'ridan-to'g'ri oldinga yoki mahalliy yondashuvni topa olmadim, chunki yuqorida aytib o'tilgan xizmatni ishga tushirish uchun avval Dockerfaylni qo'lda yozishni boshlashimiz kerak. Biroz qidiruvni amalga oshirgandan so'ng, men ushbu xizmatni dockerfaylni yozib, uni qurib, o'rnatib yozishga muvaffaq bo'ldim.

Men foydalanadigan namuna dokeri fayli quyidagicha.

Men buning uchun go build-ning so'nggi rasmini ishlatganman va doker faylini yaratgandan so'ng biz uni yaratamiz va quyida boshlaymiz.

$ docker build -t .
$ docker -d -p 8080: 8080

Endi xizmat docker konteynerida ishlaydi va unga avvalgidek URL manzili orqali kirish mumkin.

SpringBoot

SpringBoot dasturni yuklashning oson usulini taqdim etadi. Men SpringBoot dasturini yaratish uchun bahor boshlang'ich dasturining onlayn-vositasidan foydalandim. U tuzilgan paytda barcha kerakli bog'liqliklarga ega bo'lgan bajariladigan jar faylini yaratadi.

Hech bo'lmaganda oddiy http xizmatini yaratish uchun bizga quyidagi sinflar kerak.

Ilovani ishlaydigan dasturlar sinfi

So'rov / javoblarni qayta ishlashni amalga oshiradigan so'rovlar nazorati.

Biz quyida keltirilgan maven / java yordamida yuqoridagi xizmatni qurib ishga tushirishimiz mumkin.

$ mvn toza o'rnatish
$ java -jar target / salom-olam-1.0.jar

SpringBoot veb-xizmati xizmatni tarqatish va fosh qilish uchun ostidagi tomcat-dan foydalanadi va biz xizmatga quyidagi manzilda kirishimiz mumkin - http: // localhost: 8080 / salom

Endi bahorga asoslangan xizmatni qanday dockerizatsiya qilishni ko'rib chiqamiz.

Shuningdek, SpringBoot-da biz Dockerfile-ni qo'lda yaratib, avvalgi bosqichda bajarilgan jardan docker tasvirini yaratish uchun zarur bo'lgan ko'rsatmalarni kiritishimiz kerak.

Minimal ko'rsatmalar to'plamiga ega bo'lgan SpringBoot stsenariysi uchun Dockerfile-ga misol quyida keltirilgan

Biz yuqorida Dockerfile-ni quramiz va keyin uni quyidagi kabi ishlaymiz.

$ docker build -t .
$ docker -d -p 8080: 8080

Yuqoridagi konteynerni ishga tushirgandan so'ng, biz xizmatga avvalgi kabi URL manzilidan foydalana olishimiz kerak.

Balerina

Balleirna yozuv va xizmatlarni ochish uchun birinchi darajali yordamga ega. Balerinada yozilgan oddiy HTTP asosidagi xizmat quyidagicha.

Quyidagi kabi biz "Ballerina" xizmatini quramiz va ishlaymiz.

$ ballerina helloWorld.bal yaratish
$ ballerina helloWorld.balx ishlaydi

Yuqoridagi xizmatni ishga tushirgandan so'ng, biz unga kirishimiz mumkin - http: // localhost: 9090 / salom / sayHello

Endi ushbu xizmatni qanday dockerizatsiya qilish va tarqatishni ko'rib chiqamiz. Ma'lum bo'lishicha, Ballerina yuqoridagi xizmat uchun doker tasvirini osongina yaratishda yordam beradi. Foydalanuvchi Dockerfile-ni yaratishni va uni qurishni boshlashi shart emas, chunki barcha funktsiyalar mahalliy Ballerina tilida berilgan. Yuqorida keltirilgan xizmat bilan ishlatilishi mumkin bo'lgan moduldan (ballerinax / docker) kelib tushadigan dokerlarni joylashtirishga oid izohlar mavjud. Yuqoridagi xizmatning dockerni joylashtirishga oid izohlari bilan yangilangan versiyasi quyidagicha.

Yuqoridagi izohlarni tushunish uchun juda to'g'ri ko'rinadi. The @docker: Expose docker muhitini qanday portlarni fosh qilish kerakligini bilib oladi. @Docker: Config asosan Dockerfile yaratish uchun zarur bo'lgan doker tasvirining nomi, yorlig'i, versiyalari va hk.

Xizmatni docker bilan bog'liq izohlar bilan yangilaganimizdan so'ng, biz uni qurganimizdan so'ng, Ballerina avtomatik ravishda Dockerfile-ni yaratadi, uni quradi va mahalliy docker reestriga kiruvchi doker tasvirini yaratadi. O'rnatish chiqishi quyidagi kabi ko'rinadi.

Avtomatlashtirilgan Dockerfile quyidagi tarkibga ega bo'ladi.

Yuqoridagi tarkibdan biz Dockerfile yaratishda izohlar bilan berilgan qiymatlardan foydalanilganligini ko'rishimiz mumkin.

Endi bizga faqat ishlab chiqarish natijalarida tavsiya etilgan buyruqni berishimiz kerak.

$ docker ishga tushirish -d -p 9090: 9090 helloworld: v1.0

Yuqoridagi ishga tushirish buyrug'i bilan konteynerda ishlayotgan Ballerina xizmatiga avvalgi URL manzildan foydalana olishimiz kerak.

Shunday qilib, biz Go, SpringBoot va Ballerina-da oddiy http xizmatini qanday yozishni va xizmatni dockerizatsiya qilish va konteynerga qanday joylashtirishni ko'rib chiqdik.

Xulosa qilib aytganda, Go va SpringBoot-da http xizmati / ilovasidan tashqarida doker tasvirini yaratish uchun ba'zi qo'shimcha va qo'lda ishlar talab etiladi. Ammo Ballerinaning xizmatlardan docker tasvirlarini yaratish va ularni integratsiya jihatlarini qo'llab-quvvatlovchi dasturlash tillari bo'shlig'ini to'ldiradigan kabi joylashtirish uchun mahalliy yordam mavjud.