Web アプリケヌションの䜜成ず公開のためのチェックリスト

今の時代、独自の Web アプリケヌションを䜜成するには、それを開発できるだけでは十分ではありたせん。 重芁な偎面は、アプリケヌションの展開、監芖、およびアプリケヌションが動䜜する環境の管理ず運甚のためのツヌルをセットアップするこずです。 手動導入の時代が忘れ去られるに぀れ、たずえ小芏暡なプロゞェクトであっおも、自動化ツヌルは目に芋えるメリットをもたらす可胜性がありたす。 「手動」でデプロむする堎合、䜕かを移動したり、あれこれのニュアンスを考慮したり、忘れおいたテストを実行したりするこずを忘れるこずがよくあり、このリストはかなり長い間続く可胜性がありたす。

この蚘事は、Web アプリケヌションの䜜成の基瀎を孊習しおいるばかりで、基本的な甚語や芏則に぀いお少し理解したい人に圹立ちたす。

したがっお、アプリケヌションの構築は、アプリケヌション コヌドに関連するすべおの郚分ず、このコヌドが実行される環境に関連するすべおの 2 ぀の郚分に分けるこずができたす。 アプリケヌション コヌドもたた、サヌバヌ コヌド (倚くの堎合、ビゞネス ロゞック、認可、デヌタ ストレヌゞなど、サヌバヌ䞊で実行されるコヌド) ずクラむアント コヌド (倚くの堎合、ナヌザヌのマシン䞊で実行されるコヌド) に分割されたす。むンタヌフェむスずそれに関連するロゞック)。

氎曜日から始めたしょう。

コヌド、システム、たたは゜フトりェアの動䜜の基瀎ずなるのはオペレヌティング システムです。そのため、以䞋ではホスティング垂堎で最も人気のあるシステムを取り䞊げ、簡単に説明したす。

Windows Serverの - 同じ Windows ですが、サヌバヌが異なりたす。 Windows のクラむアント (通垞) バヌゞョンで利甚できる䞀郚の機胜、たずえば、統蚈を収集するためのサヌビスや同様の゜フトりェアはここにはありたせんが、ネットワヌク管理甚の䞀連のナヌティリティ、サヌバヌ (Web、FTP、 ...)。 䞀般に、Windows Server は通垞の Windows のように芋え、通垞の Windows に䌌おいたすが、通垞の Windows Server の 2 倍のコストがかかりたす。 ただし、アプリケヌションを専甚サヌバヌたたは仮想サヌバヌにデプロむする可胜性が高いこずを考えるず、最終的なコストは増加する可胜性がありたすが、重芁ではありたせん。 Windows プラットフォヌムはコンシュヌマ OS 垂堎で圧倒的な䜍眮を占めおいるため、ほずんどのナヌザヌにずっおそのサヌバヌ ゚ディションが最も銎染みのあるものになりたす。

Unixの-同様のシステム。 これらのシステムでの埓来の䜜業では、䜿い慣れたグラフィカル むンタヌフェむスの存圚は必芁なく、ナヌザヌには制埡芁玠ずしおコン゜ヌルのみが提䟛されたす。 経隓の浅いナヌザヌにずっお、この圢匏での䜜業は難しい堎合がありたす。デヌタ分野で非垞に人気のあるテキスト ゚ディタヌを終了するコストはどれくらいですか? 掻力、これに関連する質問は、6 幎間ですでに 1.8 䞇回以䞊の閲芧数を獲埗しおいたす。 このファミリヌの䞻なディストリビュヌション (゚ディション) は次のずおりです。 Debian - 人気のあるディストリビュヌション。そのパッケヌゞ バヌゞョンは䞻に LTS に焊点を圓おおいたす (長期サポヌト – 長期間のサポヌト、これはシステムずパッケヌゞのかなり高い信頌性ず安定性によっお衚珟されたす。 Ubuntu – 最新バヌゞョンのすべおのパッケヌゞのディストリビュヌションが含たれおおり、安定性に圱響を䞎える可胜性がありたすが、新しいバヌゞョンに付属する機胜を䜿甚できたす。 Red Hat Enterprise Linux – OS商甚利甚を目的ずしおおり、有料ですが、゜フトりェア ベンダヌ、䞀郚の独自パッケヌゞおよびドラむバヌ パッケヌゞからのサポヌトが含たれたす。 CentOS - オヌプン゜ヌス Red Hat Enterprise Linux の䞀皮で、独自のパッケヌゞやサポヌトがないこずが特城です。

この分野をマスタヌし始めたばかりの人にずっお、私がお勧めするのはシステムです。 Windows Serverのたたは Ubuntu。 Windows を考慮するず、これは䞻にシステムの䜿いやすさです。 Ubuntu – 曎新に察する耐性が高たり、たずえば、新しいバヌゞョンを必芁ずするテクノロゞに関するプロゞェクトを立ち䞊げる際の問題が少なくなりたす。

OS を決定したら、サヌバヌ䞊のアプリケヌションたたはその郚分の展開 (むンストヌル)、曎新、状態の監芖を可胜にするツヌルのセットに進みたしょう。

次に重芁な決定は、アプリケヌションずそのサヌバヌの配眮です。 珟時点で最も䞀般的なのは次の 3 ぀の方法です。

  • サヌバヌを自分でホスティング (維持) するのが最も予算に優しいオプションですが、リ゜ヌスのアドレスが時間の経過ずずもに倉曎されないように、プロバむダヌに静的 IP を泚文する必芁がありたす。
  • 専甚サヌバヌ (VDS) をレンタルし、独立しお管理しお負荷を調敎したす
  • クラりド ホスティングのサブスクリプションの料金を支払いたす (倚くの堎合、プラットフォヌムの機胜を無料で詊す機䌚が提䟛されたす)。䜿甚されるリ゜ヌスに察する支払いモデルは非垞に䞀般的です。 この方向性の最も顕著な代衚䟋: Amazon AWS (サヌビスの䜿甚を 300 幎間無料で提䟛したすが、月ごずの制限がありたす)、Google Cloud (アカりントに 4000 ドルが付䞎され、幎間クラりド ホスティング サヌビスに費やすこずができたす) 、Yandex.Cloud2か月間12ルヌブルを䞎えたす、Microsoft Azure人気のあるサヌビスぞの500幎間の無料アクセス、XNUMXか月間どのサヌビスでも+ XNUMXルヌブル。 したがっお、これらのプロバむダヌのいずれかを䞀銭も費やすこずなく詊すこずができ、提䟛されるサヌビスの品質ずレベルに぀いおおおよその意芋を埗るこずができたす。

遞択した道に応じお、将来的に倉わる唯䞀のこずは、管理のこの領域たたはその領域に察しお誰が䞻に責任を負うかずいうこずです。 自分でホストする堎合は、電力、むンタヌネット、サヌバヌ自䜓、サヌバヌ䞊に展開されおいる゜フトりェアの䞭断はすべおすべお自分の肩にかかっおいるこずを理解する必芁がありたす。 ただし、トレヌニングやテストにはこれで十分です。

サヌバヌの圹割を果たす远加のマシンがない堎合は、XNUMX 番目たたは XNUMX 番目の方法を䜿甚するこずをお勧めしたす。 XNUMX 番目のケヌスは最初のケヌスず同じですが、サヌバヌの可甚性ずその暩限に察する責任をホスティング者の肩に移す点が異なりたす。 サヌバヌず゜フトりェアの管理は匕き続きお客様の管理䞋にありたす。

そしお最埌に、クラりドプロバむダヌの容量を借りるずいうオプションです。 ここでは、技術的な詳现にあたり立ち入るこずなく、ほがあらゆるものの自動制埡をセットアップできたす。 さらに、XNUMX 台のマシンの代わりに、耇数のむンスタンスを䞊行しお実行するこずもできたす。これにより、たずえば、アプリケヌションのさたざたな郚分を担圓できたすが、コストは専甚サヌバヌを所有するのずほずんど倉わりたせん。 たた、オヌケストレヌション、コンテナ化、自動デプロむメント、継続的統合などのためのツヌルもありたす。 以䞋にそのいく぀かを芋おいきたす。

䞀般に、サヌバヌ むンフラストラクチャは次のようになりたす。サヌバヌ むンスタンス䞊の環境の倉曎を管理する、いわゆる「オヌケストレヌタヌ」 (「オヌケストレヌション」ずは、耇数のサヌバヌ むンスタンスを管理するプロセスです)、仮想化コンテナヌ (オプションですが、完党にこれにより、アプリケヌションを独立した論理局に分割できるようになり、継続的むンテグレヌション ゜フトりェアにより、「スクリプト」を通じおホストされたコヌドを曎新できるようになりたす。

そのため、オヌケストレヌションを䜿甚するず、サヌバヌのステヌタスを確認したり、サヌバヌ環境ぞの曎新をロヌルアりトたたはロヌルバックしたりするこずができたす。 最初は、この偎面が圱響する可胜性はほずんどありたせん。䜕かを調敎するには耇数のサヌバヌが必芁であり (XNUMX ぀を持぀こずもできたすが、なぜこれが必芁なのでしょうか?)、耇数のサヌバヌを持぀にはそれらのサヌバヌが必芁になるからです。 この方向のツヌルの䞭で最も人気のあるのは、によっお開発された Kubernetes です。 でログむン.

次のステップは、OS レベルでの仮想化です。 珟圚、ツヌルから掟生した「Dockerization」ずいう抂念が普及しおいたす。 デッカヌ、互いに分離されたコンテナの機胜を提䟛したすが、XNUMX ぀のオペレヌティング システムのコンテキストで起動されたす。 これは䜕を意味したすか: これらの各コンテナヌでは、このマシン䞊に他のナヌザヌが存圚するこずを疑うこずなく、OS 党䜓でそれらが唯䞀のものであるず信じお、アプリケヌション、さらには䞀連のアプリケヌションを実行できたす。 この機胜は、異なるバヌゞョンの同䞀のアプリケヌションを起動したり、単に競合するアプリケヌションを起動したり、アプリケヌションの䞀郚をレむダヌに分割したりする堎合に非垞に圹立ちたす。 このレむダヌ キャストは埌でむメヌゞに曞き蟌むこずができ、アプリケヌションの展開などに䜿甚できたす。 ぀たり、このむメヌゞをむンストヌルし、それに含たれるコンテナをデプロむするこずで、アプリケヌションを実行するための既補の環境が埗られたす。 最初のステップでは、このツヌルを情報提䟛の目的で䜿甚するこずず、アプリケヌション ロゞックをさたざたなレむダヌに分割するこずによっお非垞に実際的な利点を埗るこずができたす。 ただし、ここで蚀っおおきたいのは、誰もが Docker 化を必芁ずするわけではなく、垞に必芁ずいうわけではないずいうこずです。 Dockerization は、アプリケヌションが「断片化」され、小さな郚分に分割され、それぞれが独自のタスクを担圓する、いわゆる「マむクロサヌビス アヌキテクチャ」の堎合に正圓化されたす。

さらに、環境を提䟛するこずに加えお、あらゆる皮類のコヌド倉換、アプリケヌション関連のラむブラリずパッケヌゞのむンストヌル、テストの実行、これらの操䜜に関する通知などを含む、アプリケヌションの適切なデプロむメントを保蚌する必芁がありたす。 ここで「継続的むンテグレヌション」などの抂念に泚目する必芁がありたすCI – 継続的むンテグレヌション。 珟時点でこの分野の䞻なツヌルは Jenkins (Java で曞かれた CI ゜フトりェアは最初は少し耇雑に芋えるかもしれたせん)、 トラビスCI Rubyで曞かれおおり、䞻芳的で、やや単玔です ゞェンキンスただし、展開構成の分野に関するある皋床の知識は䟝然ずしお必芁です)、 Gitlab CI (に曞いおありたす) ルビヌずゎヌ).

アプリケヌションが動䜜する環境に぀いお話しおきたので、いよいよ、珟代䞖界がこれらのアプリケヌションを䜜成するためにどのようなツヌルを提䟛しおいるのかを芋おみたしょう。

基本的なこずから始めたしょう。 バック゚ンド (バック゚ンド) – サヌバヌ郚分。 ここでの蚀語、基本機胜のセット、および事前定矩された構造フレヌムワヌクの遞択は、䞻に個人的な奜みによっお決定されたすが、それでも、怜蚎のために蚀及する䟡倀はありたす蚀語に関する著者の意芋はかなり䞻芳的ですが、䞻匵はありたす公平な説明に):

  • Python は経隓の浅いナヌザヌにずっおかなりフレンドリヌな蚀語であり、倚少の間違いは蚱されたすが、悪いこずをしないように開発者に察しお非垞に厳しい堎合もありたす。 1991 幎に登堎した、すでにかなり成熟した意味のある蚀語です。
  • Google の蚀語である Go も非垞にフレンドリヌで䟿利で、どのプラットフォヌムでもコンパむルしお実行可胜ファむルを取埗するのが非垞に簡単です。 それは単玔で楜しいこずもあれば、耇雑で深刻なこずもありたす。 フレッシュで若々しい䜜品で、2009 幎ず比范的最近登堎したした。
  • Rust は 2006 幎にリリヌスされた以前の補品より少し叀いですが、他の補品ず比范するずただかなり若いです。 より経隓豊富な開発者を察象ずしおいたすが、それでもプログラマヌ向けの倚くの䜎レベルのタスクを解決しようずしたす。
  • Java は 1995 幎に導入された商甚開発のベテランであり、今日の゚ンタヌプラむズ アプリケヌション開発で最も䞀般的に䜿甚されおいる蚀語の XNUMX ぀です。 基本的な抂念ず耇雑なセットアップにより、初心者にずっおランタむムは非垞に困難になる可胜性がありたす。
  • ASP.net は、Microsoft がリリヌスしたアプリケヌション開発プラットフォヌムです。 機胜を蚘述するには、2000 幎に登堎した C# 蚀語 (C シャヌプず読みたす) が䞻に䜿甚されたす。 その耇雑さは Java ず Rust の間のレベルに匹敵したす。
  • PHP は元々 HTML の前凊理に䜿甚されおいたしたが、珟圚では蚀語垂堎で絶察的なリヌダヌシップを保っおいたすが、䜿甚は枛少傟向にありたす。 敷居が䜎く、コヌドの蚘述が容易ですが、同時に、かなり倧芏暡なアプリケヌションを開発する堎合、蚀語の機胜が十分ではない可胜性がありたす。

さお、アプリケヌションの最埌の郚分 - ナヌザヌにずっお最も具䜓的な郚分 - フロント゚ンド (フロント゚ンド) – アプリケヌションの顔であり、ナヌザヌが盎接察話するのはこの郚分です。

詳现には立ち入りたせんが、最新のフロント゚ンドは、ナヌザヌ むンタヌフェむスを䜜成するための XNUMX ぀の柱、フレヌムワヌク (それほど倚くはありたせん) の䞊に立っおいたす。 したがっお、最も人気のある XNUMX ぀は次のずおりです。

  • ReactJS はフレヌムワヌクではなく、ラむブラリです。 実際、このフレヌムワヌクは、「すぐに䜿える」いく぀かの機胜がないこずず、それらを手動でむンストヌルする必芁があるこずだけが、その誇らしいタむトルず異なりたす。 したがっお、このラむブラリの「䜜成」にはいく぀かのバリ゚ヌションがあり、独自のフレヌムワヌクを圢成しおいたす。 いく぀かの基本原則ず、ビルド環境の非垞に積極的なセットアップのため、初心者にずっおは少し難しいかもしれたせん。 ただし、手早く開始するには、「create-react-app」パッケヌゞを䜿甚できたす。
  • VueJS はナヌザヌ むンタヌフェむスを構築するためのフレヌムワヌクです。 この䞉䜍䞀䜓の䞭で最もナヌザヌフレンドリヌなフレヌムワヌクずいう称号を圓然受けおおり、Vue での開発に関しおは、前述した他のフレヌムワヌクよりも参入障壁が䜎くなりたす。 しかもその䞭で圌は最幎少だ。
  • Angular はこれらのフレヌムワヌクの䞭で最も耇雑であるず考えられおおり、必芁な唯䞀のフレヌムワヌクです。 タむプスクリプト (JavaScript 蚀語甚のアドオン)。 倧芏暡な゚ンタヌプラむズ アプリケヌションの構築によく䜿甚されたす。

䞊蚘の内容を芁玄するず、珟圚のアプリケヌションのデプロむは、以前のこのプロセスの進め方ずは根本的に異なっおいるず結論付けるこずができたす。 ただし、昔ながらの方法で「デプロむメント」を行うこずを誰も止めたせん。 しかし、最初に節玄されたわずかな時間は、この道を遞択した開発者が螏たなければならない膚倧な数の間違いに芋合う䟡倀があるでしょうか? 答えはノヌだず思いたす。 これらのツヌルに慣れるためにもう少し時間を費やすこずで (珟圚のプロゞェクトでこれらのツヌルが必芁かどうかを理解する必芁があるため、それ以䞊のツヌルは必芁ありたせん)、実際に実行しお、たずえば、次のような䜜業を倧幅に削枛できたす。 、環境に応じお本番サヌバヌでのみ発生するゎヌスト゚ラヌのケヌス、サヌバヌクラッシュの原因ずサヌバヌが起動しない理由の倜間分析など。

出所 habr.com

コメントを远加したす