Или је ваш задатак мали, или га можете поделити на мање задатке. А мали задатак савршено одговара микросервису.

Дизајн софтвера је суштинска фаза у развоју софтвера. Приступ дизајну може утицати на цео пројекат и на то како се носите са различитим захтевима.

Програмери су често користили монолитну архитектуру, спајајући све софтверске компоненте у један модул. Међутим, овај приступ се може показати неефикасним, посебно за веће апликације.

Микросервис има за циљ да одговори на ова ограничења. Микросервис је мала, модуларна апликација која обавља одређене функције. За разлику од монолитних апликација, микросервис омогућава независну примену и скалирање. Као резултат тога, они су флексибилнији и лакши за одржавање.

Микросервисна архитектура

Микросервисна архитектура је приступ дизајну софтвера који дели велику апликацију на независне услуге, при чему је свака услуга дизајнирана да одговори на специфичне пословне захтеве.

Ове услуге раде на наменским ресурсима, укључујући засебне инстанце базе података и рачунарску снагу. За разлику од монолитних система, микросервисне апликације су лабаво повезане што омогућава већу флексибилност.

У дистрибуираном систему, серверски чворови постављају и извршавају микросервисне апликације као засебне процеси – међусобно комуницирају користећи комуникационе протоколе као што је ХТТП или преко посредника порука као РаббитМК.

У суштини, овај архитектонски приступ омогућава услугама да задрже своју независност једна од друге док ефикасно раде унутар софтверског система.

У овом водичу ћемо вас водити кроз имплементацију једноставне корисничке микросервисе која управља корисничким подацима користећи Фласк и ПостгреСКЛ

Подесите ПостгреСКЛ базу података

Да бисте започели, инсталирајте ПостгреСКЛ. Ако немате инсталиран ПостгреСКЛ, можете сазнати како инсталирати ПостгреСКЛ на Виндовс или како инсталирати ПостгреСКЛ на мацОС.

Алтернативно, можете конфигурисати а удаљену ПостгреСКЛ базу података инстанце.

Овај водич ће користити Рендеров бесплатни ниво за постављање ПостгреСКЛ базе података. Пратите ово да бисте покренули ПостгреСКЛ инстанцу базе података на Рендеру:

  1. Пређите на Рендерова веб страница, региструјте се за налог и пријавите се на свој Командна табла страна.
  2. На страници контролне табле, са листе приказаних услуга, изаберите услугу ПостгреСКЛ.
  3. На страници подешавања базе података попуните потребне детаље и обавезно изаберите слободан ниво, и на крају кликните Креирајте базу података.

Код овог пројекта можете пронаћи у овоме ГитХуб спремиште.

Направите Фласк Мицросервице

  1. У свом терминалу направите нови директоријум и промените га:
    мкдир фласк-мицросервице
    цд фласк-микросервис
  2. Следеће, инсталирајте виртуаленв, за стварање изолованог виртуелног развојног окружења.
    пип инсталл виртуаленв
  3. Направите виртуелно окружење у свом пројекту:
    виртуаленв венв
  4. На крају, активирајте виртуелно окружење.
    # Виндовс: 
    .\венв\Сцриптс\ацтивате
    # Уник или МацОС:
    извор венв/бин/активирај

Инсталирајте потребне пакете

  1. Створити нова Захтеви.ткт датотеку у основном директоријуму и додајте ове пакете:
    пљоска
    псицопг2-бинари
    склалцхеми
  2. Затим инсталирајте пакете.
    пип инсталл -р Захтеви.ткт

Направите Фласк сервер

У основном директоријуму направите нову датотеку: сервице.пи, и следећи код:

  1. Направите следеће увозе:
    из пљоска увоз Фласк, захтев, јсонифи
    из склалцхеми увоз цреате_енгине, Цолумн, Интегер, Стринг
    из склалцхеми.орм увоз сессионмакер
    из склалцхеми.ект.децларативе увоз декларативне_базе
    увоз псицопг2
  2. Креирајте Фласк инстанцу и конфигуришите везу са базом података.
    апп = Фласк (__наме__)

    енгине = цреате_енгине("постгрескл+псицопг2://фласк_сервице_фе0в_усер: 4785МхјфкдјфхјфјиУк67О2Нузјцхб2МКИП@дпг-цхффјфјдкгфк54д6мб7860-а.орегон-постгрес.рендер_цом".)

    Копирај УРЛ спољне базе података на страници подешавања базе података Рендер-а. Користићемо СКЛАлцхеми цреате_енгине метода и Псицопг2 да конфигуришете везу са базом података. Обавезно ажурирајте и замените УРЛ базе података у горњем коду УРЛ-ом сопствене ПостгреСКЛ инстанце која одговара формату наведеном изнад. Ако је формат УРЛ-а нетачан, код ће приказати грешку.
  3. Креирајте СКЛАлцхеми модел за базу података.
    База = декларативна_база()
    класаКорисник(база):
    __табленаме__ = 'корисници'
    ид = Колона (цео број, примарни_кључ=Истина)
    име = Колона (Стринг(50))
    Басе.метадата.цреате_алл (машина)
    штампа („Табела „корисници“ је успешно направљена.“)
    Сесија = креатор сесије (машина)
    Код дефинише модел података за табелу корисника. Након дефинисања модела, креира табелу користећи СКЛАлцхеми цреате_алл метод који узима базу података прикључак мотора објекат као параметар. Коначно, ствара инстанцу креатор сесије коришћењем истог објекта машине за омогућавање интеракције са базом података.
  4. На крају, дефинишите АПИ руте за микросервис.
    @апп.роуте("/апи/усер", метходс=["ПОСТ"])
    дефнаправи корисника():
    подаци = рекуест.гет_јсон()
    име = подаци["име"]
    покушати:
    сесија = сесија()
    нови_усер = Корисник (име=име)
    сессион.адд (нови_усер)
    сессион.цоммит()
    повратак {"ид": нев_усер.ид, "име": нев_усер.наме, "порука": ф"Корисник {наме} створена“.}, 201
    осим Изузетак као е:
    штампа (ф"Грешка"{е}' дошло.")
    повратак {"грешка": „Дошло је до грешке при креирању корисника.“}, 500
    @апп.роуте("/апи/усер", метходс=["ГЕТ"])
    дефгет_алл_усерс():
    покушати:
    сесија = сесија()
    корисници = сессион.куери (Усер).алл()
    ако корисници:
    резултат = []
    за корисник ин корисници:
    ресулт.аппенд({"ид": ИД корисник, "име": корисничко име})
    повратак јсонифи (резултат)
    друго:
    повратак јсонифи({"грешка": ф"Корисници нису пронађени."}), 404
    осим Изузетак као е:
    штампа (ф"Грешка"{е}' дошло.")
    повратак {"грешка": „Дошло је до грешке при добијању свих корисника.“}, 500
    ако __наме__ == "__главни__":
    апп.рун (дебуг=Истина, хост="0.0.0.0")

Тестирајте микросервис

Горњи код показује једноставну микроуслугу корисничких података која додаје и преузима податке из ПостгреСКЛ базе података. У идеалном случају, микросервисе одражавају РЕСТ АПИ архитектура будући да омогућава флексибилан приступ изградњи веб сервиса — ова архитектура се добро уклапа у дизајн микросервиса.

Међутим, важно је напоменути да микросервисе могу користити и друге типове приступа дизајну и комуникационих протокола, у зависности од специфичних потреба система.

Да бисте тестирали услугу, покрените развојни сервер и идите на Постман да бисте упутили ХТТП захтеве дефинисаним крајњим тачкама.

фласк --апп сервице рун

У Постман, направите ПОСТ захтев за додавање корисничких података.

Контејнеризација микросервиса помоћу Доцкер-а

Доцкер групише апликације и њихове зависности у контејнере. Овај приступ поједностављује развој, примену и управљање микроуслугама у производном окружењу пошто сваки сервис може да ради независно и да комуницира са другим сервисима користећи конфигурисану комуникацију протокола.

Пре него што почнете, прво морате да инсталирате Доцкер пратећи кораке на Доцкер веб локација. Затим направите Доцкер слику из Доцкерфиле-а која садржи неопходна упутства за подешавање потребних зависности за покретање апликације у контејнеру.

  1. Направите Доцкерфиле у основном директоријуму фасцикле пројекта и додајте ова упутства:
    ИЗ питхон:3.9-алпски
    ВОРКДИР /app
    ЦОПИ Захтеви.ткт ./
    ТРЦАТИ пип инсталл -р Захтеви.ткт
    ЦОПИ. .
    ЕКСПОСЕ5000
    ЦМД ["питхон", "./сервице.пи"]
  2. Покрените наредбу испод да бисте направили Доцкер слику.
     доцкер буилд -т фласк-мицросервице .
  3. На крају, покрените Доцкер контејнер.
    доцкер рун -п 5000:5000 фласк-мицросервице

Ово ће покренути Доцкер контејнер који покреће Фласк микросервис и изложити порт 5000 на контејнеру порт 8000 на главној машини, омогућавајући вам да правите ХТТП захтеве из вашег веб претраживача или поштара користећи УРЛ http://localhost: 5000.

Усвајање микросервисне архитектуре

Архитектура микросервиса је постала популаран приступ за развој скалабилних и робусних софтверских апликација. Поделом апликације на мале услуге које се могу независно применити, архитектура микросервиса олакшава одржавање и скалирање система.

Иако ова архитектура има потенцијалне предности, није погодна за све случајеве употребе. У сваком случају, специфични пословни захтеви пројекта треба да утичу пре свега на усвојени приступ дизајну.