バックエンドWeb開発を学ぶための最良の方法

前回の記事では、フロントエンド開発に取り掛かる方法について説明しました。また、フロントエンドが地雷でいっぱいの場所になる方法についても説明しました。間違った場所に足を踏み入れると、JavaScriptエコシステムの多くのフレームワークに圧倒されます。

このブログ記事では、バックエンド開発に取り掛かる方法を見てみましょう。その過程で、人々が私にそれについて尋ねる最も一般的な質問のいくつかに答えます。

バックエンド開発とは何ですか?

フロントエンド開発には、ユーザーが所有する特定のURLを開いたときに画面に表示されるものが含まれます。完全に静的な環境(HTML / CSSのみ)でも、誰かがWebサイトを開くと、地球上の一部のサーバーがそれらのHTMLファイルとCSSファイルで応答する必要があります。

そのサーバーは、インターネットを閲覧するために自分で使用するサーバーと同じように、単なるコンピューターです。ただし、パフォーマンスが向上するように調整されており、マウスやキーボードなどの不要なコンポーネントは接続されていません。そして、それはおそらくデータウェアハウス内の他の多くのコンピューターと一緒に座っています。

これらのコンピューターを特別な方法でプログラミングすることをバックエンド開発と呼びます

バックエンド開発は、ユーザーの背後で実行されるため、それが何であるかと呼ばれていると思うかもしれません。Webサイトへの訪問者が、バックエンドに完全に「アクセス」することは決してありません。それらは、非常に制限されたアクセス(HTML / CSSファイルの転送など)のためにポートを介して直接サーバーと通信するか、CDNまたはファイアウォール(Cloudflareなど)の奥深くに埋め込まれているだけです。

バックエンド開発の意味を完全に理解したので、いくつかの実際の質問に取り掛かりましょう。

バックエンドにはフロントエンドのプログラミング知識が必要ですか?

TLDR; 番号。

上記のように、バックエンド開発には、おそらく地球の反対側にあるコンピューターのプログラミングが含まれ、ユーザーが自分のコンピューターから言うことに応答する責任があります。

フルタイムのバックエンド開発者であれば、ユーザーのブラウザに送信するHTML、CSS、JavaScriptファイルの内部で何が起こっているのかを気にする必要はありません。代わりに、サーバーのパフォーマンス、サーバーコード、およびスループットに重点を置く必要があります。

バックエンド開発には何が入りますか?

さて、本を見ると、HTTP要求に応答できるアプリケーションをコーディングする人はバックエンド開発者であると言うかもしれません。

しかし実際には、バックエンド開発者がサーバースクリプトを書く以上のことができる場合があります。彼らは、リバースプロキシサーバー(NGiNX / HAProxy)をセットアップし、圧縮やその他の方法でサイトを高速化し、本番Docker環境をセットアップする知識を持っています。

バックエンド開発者としての資格を得るには、最低限必要なスキルは次のとおりです。

  1. HTTPサーバーを作成できるプログラミング言語に関する十分な知識。例:C#、Java、Node、PHP、Pythonなど(たくさんあります!)
  2. cPanel(従来型)またはbashターミナル(クラウドホスティング/従来型)を使用してホストを管理します
  3. ビルドを管理およびデプロイするためのgitなどのバージョン管理システム(VCS)の操作

すべてのゲームに最小および推奨仕様が付属しているのと同様に、バックエンド開発者にとって、私の推奨仕様は(最小スキルを含む)次のようになります。

  1. 静的ファイル資産とサーバー管理のためのNGiNX
  2. データベース管理スキル(SQL / NoSQL)
  3. バックエンドのセキュリティ(安全で堅牢なコードの記述、制限された特権を持つDockerコンテナーでのアプリケーションの実行、DoS攻撃からの保護)
  4. 自動スケーリング/負荷分散

了解しました。バックエンド開発に何が入るかについて話しすぎています。しかし、どのようにして1つになりますか?

最小要件から始める

私が言ったように、バックエンドについては、ゲームと同じように、一連の最小要件と推奨要件があります。最小要件は、次の3つで構成されます。

バックエンドプログラミング言語を学ぶ

人々が自分で学ぶとき、彼らは通常、フロントエンド開発を行うことができるチームや誰も持っていません。それらはすべて独自のものです。そのため、少なくとも最初は、多くの場合、すべて自分でWebページとサーバーを作成する必要があります。

バックエンドプログラミング言語には多くの選択肢がありますが、HTTPサーバーをすぐにサポートしない一般的なシステム言語は考えられません。ノードを選択する利点は、フロントエンドのJavaScriptスキルをバックエンドに移転できることです。

それでも、Java、C ++、C#、Python、PHPなどのさまざまな言語から選択できます。

どのように1つを選ぶか、あなたは尋ねるかもしれません。答えは、フロントエンド開発の記事と同じです。最初にすべてを試して、どれが最適かを確認する必要があります。

フロントエンドのJSプログラミングをすでに行っているかもしれないので、ノードは簡単です。しかし、PythonまたはJava開発者であれば、それらを簡単に見つけることができるかもしれません。それはあなたの職業と好みに完全に依存します。

ホスティングの管理について学ぶ

サーバーを手動で購入して自宅にセットアップし、ISPに接続して、すべてを自分で行う必要がある時代は終わりました。これはクラウドコンピューティングの時代です。今、あなたのウェブサイトをホストするとき、あなたは主に2つのオプションがあります:

  1. HostGatorやGoDaddyのようなマネージドホスティングサーバーを探しています。
  2. GCP、AWS、DigitalOceanなどのクラウドホスティングプロバイダーを探しています。

2つの違いは何ですか?どちらの場合も、サーバーはそれぞれの会社によって所有および運営されています。ただし、主な違いは、マネージドホスティングの方がGUIに対応し、ファイルシステムの確認、使用状況の監視、公式ドメインメールの管理、サーバーからのファイルのアップロード/ダウンロードなどのための豊富なツールセットがあることです。これは基本的に、技術的なスキルが低い人向けの設定です。

そのため、経験豊富な開発者にはHostGatorやGoDaddyのような管理サイトはお勧めしません。それでも、主に前払いのプランがあるため、間違いを犯して学ぶのに適したプラットフォームかもしれません。また、物事を管理するための優れたUIが用意されているため、誤って請求書を作成することはありません。

ただし、速度を上げ始めたら、クラウドプロバイダーに切り替えることをお勧めします。これにより、サーバー上のファイルやフォルダーの管理に使用していたcPanelの優れたツールがすべて削除されます。しかし同時に、それはあなたのスキルをたくさんレベルアップすることをあなたに挑戦させます。

今日、多くのクラウドプロバイダーもまともな無料トライアルを提供しているので、完全に入る前に実際にプラットフォームを試すことができます。私は開発者向けのWebサイト(codedamn)をDigitalOceanでホストしており、サイトの複雑さと機能。

このリンクを使用してDigitalOceanにサインアップし、100ドルのクレジットを無料で入手できます。DigitalOceanインスタンスは月額5ドルと安いので、そのインスタンスには約20か月の滑走路がありますね。

とにかく、あなたはどんなクラウドプロバイダーも選ぶことができます。次に、コマンドラインだけを使用してサーバーにSSH接続することでサーバーを管理する方法を学ぶことが重要です。

バージョン管理システムについて学ぶ

Git forVCS以外にも他のソリューションがあります。しかし、Gitは最も使用されており、最も理解しやすいものです。

個人として、あなたはすぐにそれを評価しないかもしれません。しかし、プロジェクトで同時に複数の機能についてチームで作業を開始した瞬間に、なぜそれが非常に重要なのかが理解できます。

Gitを使用すると、コミットとブランチを使用してワークフローを管理できます。コミットは、コードベースのチェックポイントのようなものです。失敗した場合はいつでも元に戻すことができます。

ブランチは、プロジェクトの代替現実のようなものであり、まったく異なることが起こる可能性があります。これらの代替現実は、任意の時点から作成でき、いつでも再びマージできます。

それらの現実を互換性と一緒にマージできるのであれば、それは問題ありません。しかし、対立がある場合(ある現実で生きていて、別の現実で死んでいる場合など)、手動で選択する必要があります。その他の変更は自動的にマージできます。

Gitは非常に興味深いものであり、一度慣れたら、すべてのプロジェクトで使用したいと思うでしょう。作業の履歴を効率的に保持できます(コミット間の違いのみを圧縮して保存します)。

また、GitHubなどのサイトでオンラインのgitリポジトリを作成することもできます。これは、Webサイトの信頼できる唯一の情報源として機能します。GitHubのようなサイトは、サーバーに手動でアクセスして自分で更新しなくても、新しいチェックポイント(新しいコミット)を追加するたびに実際にWebサイトを更新できる特別なWebhookを使用して構成できます。

おすすめのスキルを探す

私はやって学ぶことを大いに信じています。そして、何かをするための最良の方法は、必要性や興味から生まれます。最小要件で十分だと思ったら、推奨されるスキルを習得します。これには、上記のDockerやNGiNXなどのすべてのツールが含まれます。

DevOpsは、バックエンド開発者に非常にうまく適合するものでもあります。自動ビルド展開のためにTravisCIまたはCircleCIを試してみることができます。継続的インテグレーションとデプロイメント(CI / CD)は、別のブログ投稿全体を取り上げる可能性のあるトピックであるため、ここでは取り上げません。実際、正しく設定すると、開発者の時間を大幅に節約できます。

次に、データベースを紹介します。これを推奨スキルに配置しました。ただし、ユーザーによって生成されたある種のデータ永続性を伴うほとんどすべてのアプリケーションにデータベースが必要になります。

データベースは通常、操作を開始するのは簡単ですが、適切に保守および調整するのは困難です。バックエンドの技術スタックでの作業を開始する最良の方法は、アプリケーションのコード、リバースプロキシサーバー、データベースなど、すべてを1つのサーバーにまとめることです。そうすれば、それぞれに習熟するにつれて、次のことができるようになります。それを既存のビジネスロジックから切り離します。

これを行うことで、高度に拡張できるアーキテクチャを実現できます。データベース操作を多用するアプリケーションには、データベース用に最適化されたソリューションがあります。また、トラフィックの多いサイトには、静的アセットをオフロードするための優れたCDNメカニズムが必要です。

結論

学ぶことはたくさんありますが、あきらめなければすべて達成可能です。私のツイッターインスタグラムのハンドルを通して、この投稿についてどう思うか教えてください。あそこに接続すれば、私にとって大きな意味があります!

また、興味がある場合は、コードダムをチェックアウトしてください。これは、バックエンド開発などのテクノロジーを学習するための開発者向けのプラットフォームです。自分のシンプルなウェブサイトサーバーを2分で起動するYTビデオも投稿しました!それをチェックして、あなたの考えを教えてください!

平和!