バックエンドは問題ありません。 奇跡か未来か?

みなさんこんにちは!



友人、私にあなたに言うことではありません、そしてあなたはあなた自身がサーバー/クライアントサーバーアプリケーションのためにバックエンドをする方法を知っています。 理想的な世界では、すべてアーキテクチャの設計から始まり、次にサイトを選択してから、必要な仮想マシンとそうでないマシンの数を見積もります。 次に、開発/テスト用のアーキテクチャを上げるプロセスが行われます。 すべて準備ができていますか? さて、コードを書き、最初のコミットを行い、リポジトリからサーバー上のコードを更新しましょう。 チェックしてオフになっているコンソール/ブラウザを開きました。 これまでのところ、すべてがシンプルですが、次は何ですか?



時間が経つにつれて、必然的にアーキテクチャが成長し、新しいサービス、新しいサーバーが登場します。そして今、スケーラビリティについて考える時が来ました。 サーバーは1を少し超えています-どういうわけかログを一緒に収集する必要があります。 すぐにログアグリゲーターについての考えが頭に浮かびます。



そして、神が禁じている何かが落ちたとき、監視の考えがすぐにやってくる。 おなじみですか? それで友達とこれを食べました。 そして、あなたがチームにいるとき、他の関連する問題が現れます。



あなたはすぐに、aws、jelastic、heroku、digitalocean、puppet / chief、travis、git-hooks、zabbix、datadog、logglyについて何も聞いていないと思うかもしれません...これはそうではないことを保証します。 これらのシステムのそれぞれと友達になろうとしました。 より正確には、これらの各システムを自分用にセットアップします。 しかし、彼らは望ましい効果を得られませんでした。 常にいくつかの落とし穴が発生し、少なくとも自動化するには作業の一部が望ましいでしょう。



そのような世界にかなり長い時間住んでいると、「まあ、私たちは開発者です。これで何かをしよう」と考えました。 プロジェクトの作成と開発のあらゆる段階で私たちに伴う問題を見積もった後、私たちはそれらを別のページに書き、将来のサービスの機能に変えました。

そして2ヶ月後、 これからサービスが生まれました-lastbackend.com







設計



サーバーシステムの構築時の最初の問題、つまりプロジェクトの視覚的な図の構築から始めました。 私はあなたのことは知りませんが、サーバーのリストやwikiまたはGoogleドックの設定済み環境と比較して、どの要素がデータストリームの流れに関連しているかを見るのは驚くべきことです。 しかし、あなたを判断します。







回路自体の設計プロセスは非常にシンプルで直感的です。左側にはバックエンド要素のリストがあり、右側には作業フィールドがあります。 ここで、ドラッグしてドラッグします。 node.js要素を有効にしてmongodbに接続する必要がありますか? どうぞ-マウスを使用して接続してください。







調整とスケーリング



システム内の各要素は一意であり、構成する必要があります。また、自動スケーリングを有効にする場合。 要素がロードバランサーの場合、アップストリームの選択ルールが示される場所があります。 要素にソースコードがある場合、そのリポジトリ、環境変数、依存関係を示します。 システムはそれをダウンロードし、インストールし、起動します。







そしてもちろん、自動展開についても考えました-特定のブランチのソースコードが変更されました-要素を巧妙かつ迅速に更新しました。 私たちはすべてを便利にしようとしました。なぜなら私たちはそれを使用しており、私たちはすべての欠点を最初に見るからです。



展開



そして、ここが最も興味深い瞬間です。 回線の準備と構成が完了すると、展開に数秒かかります。 時にはもっと長く、時には一瞬でさえあります。 それはすべて、要素のタイプとそのソースコードに依存します。 私たちは主にnode.jsでプログラムし、スキームは数秒でデプロイされます。 最もエキサイティングな瞬間は、ダイアグラム内の構成されたすべての要素がどのように「生き返り」、インジケータが点灯し、要素の現在の状態を示すかを確認することです。







私は、各アイテムを異なるホスト/データセンターで実行できることを付け加えるのを忘れていました。 たとえば、国間のトラフィックのバランスをとるために、1つの要素を1つの国で起動し、別の要素を別の国で起動し、データベースを、たとえば中央のどこかに配置することができます。 この例は確かにあまり良いものではありませんが、一般的には、特にその方法と場所を知っている場合、この機会は非常に役立つと思います。







ここは、原則として、主要部分であり、プロジェクトのサーバー部分を迅速かつ美しく、問題なく上げることができますが、次の問題についてすぐに思い出しました:



ログ集約



各要素はログをログの単一のリポジトリに集約し、そこでログの監視と分析、検索および選択を行うことができます。 隠された情報を探すためにsshとgrepを介して接続したり、データを分析したりする必要はありません。



監視および警告システム



当然、私たちと狩りは釣りに行くか、何かがうまくいかない場合は確実に通知されることを知ってリラックスするだけです。 そのため、すべての障害に関する情報がすぐに得られるようにします。 今、私の頭は痛くありません、あなたは重要な何かを見逃すことができます。



まとめ



ここで、原則として、私たちがサービスで解決しようとしている主要な問題は、少なくとも何らかの形で兄弟開発者の生活を楽にします。

当然、すべての機能をリストすることはできませんでした。主な機能のみを強調表示しようとしましたが、コメントではすべての質問と要望にさらに詳しく答えることができます。



ご清聴ありがとうございました。 最初にあなたの意見を読んで あなたの質問 答えあなたのアドバイスや希望を書き留め 、そしてまた皆のサービスのクローズドベータテストへのアクセスを与え たいと思います



ここからベータ版への招待状を入手できます。 テストの初日に-アクセスデータが記載された手紙が届きます。



PS



また、友人は、興味があれば、使用されているテクノロジーのスタックに関する一連の技術記事、つまりnode.js、mongodb、redis、socket、angular、svgなどを開始できます。



All Articles