カテゴリー: 技術

  • Azure Deployment Environments(ADE)について概要をまとめてみた

    ●プラットフォームエンジニアリングとは?

    インフラエンジニア目線ではなく、開発者目線でインフラ環境を構築・運用する技術分野。

    ↓以下、ChatGPTの回答

    ●プラットフォームエンジニアリングのメリット

    ①効率的な開発と展開が可能

    ②開発者の負担(認知負荷)軽減

    ③保守性の向上

    ④経験の浅いエンジニアも活躍可能

    ※参考URL

    ●Azure Deployment Environments(ADE)とは?

    Azureで提供されているプラットフォームエンジニアリングサービス。

    もう少し詳しく書くと、IaCのテンプレートと各環境を紐づけることで、開発チームにサービスを横展開できます。また、開発チームとしては、環境提供者に依頼せずとも、自分たちで環境を構築することが可能なうえ、コストや有効期限、組織のセキュリティ、ベストプラクティスの管理も可能なサービスとなっています。

    ●構成

    • デベロッパーセンター
      • 開発プロジェクトのコレクションを含む最上位のリソース
      • Microsoft Dev Box も同じデベロッパーセンターを使用してリソースを整理できる
    • プロジェクト
      • 開発するプロジェクト ( e コマースアプリケーションなど)
      • デベロッパーセンターの設定が自動的に適用される環境
    • 環境
      • アプリケーションをデプロイするための事前構成された Azure 環境
    • カタログ
      • IaC テンプレート一式を整理するリソース
      • デプロイ環境ではリポジトリの指定されたフォルダをスキャンして環境定義を検索する
    • 環境の種類
      • 開発チームがデプロイできる環境の種類
      • プロジェクト単位で環境の種類ごとに Azure リソースが作成されるターゲット サブスクリプションを構成できる
    • Git プロバイダー
      • IaC テンプレートを管理する
      • GitHub、Azure DevOps に対応

    https://qiita.com/TakSewo/items/dc86735635f32afee01e

    • 環境定義(.yaml)

    yamlファイルで「なんのテンプレートを使うのか?パラメータは?」といったことを定義する環境定義が必要。これがカタログがスキャンしに行くファイルとなる。

  • Azure Kubernetes Serviceとは?

    Azure上でコンテナアプリケーションを実行するマネージドのKubernetesサービス。

    • Kubernetesの複雑な運用・管理の負担削減
    • クラウドの利点を生かした高可用性、価格レベルに応じたSLAの保証
    • 需要に応じた自動スケーリングやイベントトリブンの自動スケーリング(KEDA)をサポート
    • ノードプールのVMサイズ、クラスタ数に応じた従量課金

  • GitHub Actionsについてざっくりまとめてみた

    ●背景

    いまの仕事でAzureを使ったCI/CD構成ってあまり構築したことないな~(CI/CD構成はAWSばっかだな)。てかそもそもCI/CD周りの案件にあまり関与したことないな~など考えていたら、先日のJAZUGイベントで皆さん当たり前のようにAzure×CI/CD周りを話されていたので、ざっくりGitHub Actionsについて用語や何となくのイメージをまとめようと思います。

    実際必要になった時やさらに興味持った時に触ってみようと思います。

    ●よく聞くGitHub Actionsって何?

    テスト、ビルド、デプロイのパイプラインを自動化できる継続的インテグレーションと継続的デリバリー(CI/CD)

    ※ちなみにGitHubは”バージョン管理ツール“(変更履歴を記録し、管理するシステム)

    • テスト:「仕様通りの機能が実装されているか」といった確認が自動的に行われる
    • ビルド:リリース用のブランチ(作業用に複製された領域)にマージ(併合)されビルドされる。※ビルドとは、ソースコードをコンパイルし必要なアプリケーションやライブラリなどを準備して、ソースコードが動作できる環境を組み立てること。ビルド後は自動的にテスト用のサーバにデリバリーされ、いつでも動作確認ができる状態になります。
    • デプロイ:本番環境へのアップデート

    ※ブランチとは、プログラムのコード開発において、主要な開発ラインから一時的に分岐した作業の流れのことを指す。例えば、ある機能の開発中に別の修正が必要になったとき、ブランチを切って修正作業を行うことで、並行して複数のタスクを進めることができる。これにより、チーム内での作業の衝突を避けたり、特定のバージョンのコードを保存しておくことも可能となる

    ●GitHub Actionsにも種類がある

    ①Github hosted Runner:GitHub管理サーバ下で稼働

    ②Self-hosted Runner:ユーザ所有の環境下で稼働

    ●Actions Runner Controller(ARC)

    Self-hosted Runnerの調整、スケーリングを行うKubernetes Operator。※Kubernetes上で管理

    以下3つの役割を持っている。

    ①Controller-manager

    ②Listener

    ③Runner Scale Set

    ●用語

    • Kubernetes:コンテナの運用管理と自動化を行うために設計されたオープンソースソフトウェア
    • Helm:Kubernetesのパッケージマネージャー。アプリケーションのクラスタへのデプロイに必要なすべてのコードとリソースが含まれ、アプリの配信を自動化します。

  • NATについて概要をまとめてみた

    ●種類

    ①SNAT(Source NAT):送信元IPアドレスを書き換えるNAT

    ②DNAT(Destination NAT):宛先IPアドレスを書き換えるNAT

    ●NAPT

    ネットワークアドレスだけでなく、トランスポート識別子(TCP・UDPのポート番号、ICMPクエリ識別子)も変換対象

    ※厳密にいうと、NATとNAPTは別物だが、同様(NAT=NAPT)の意味で使われることが多いので注意

  • TCPとUDP

    ●TCP

    コネクション指向型のトランスポート層プロトコル

    データ通信用のセッションを確立し、データの到着順序を保証するプロトコル(信頼性重視)

    ●UDP

    コネクションレス型のトランスポート層プロトコル

    セッションなどを確立せず、いきなりデータの送受信を開始

    データの到着順序を保証しない(レスポンス重視)

  • ネットワーク関連用語集

    ●ループバックアドレス

    自分自身を指すIPアドレス

    ●マルチキャスト

    ネットワークで特定の複数のノードに対して、1つのデータを同時に送信すること

    ●ブロードキャスト

    同一ネットワーク内のすべてのホストに送信

    ●デフォルトルート(0.0.0.0/0)

    ルーティングテーブルに合致しないパケットの転送先

    ●BGP(Border Gateway Protocol)

    AS(自律システム)間でルーティングと到達可能性の情報を交換するためにインターネット上で広く使用されている標準のルーティングプロトコル

    ●IPとTCP

    IPパケットはネットワークを構成するネットワーク機器からネットワーク機器へバケツリレーのように転送される。途中のネットワーク機器でパケットの転送に失敗し、パケットが消失してもIPプロトコルだけでは送信側も受信側がパケットが消失したことがわからない。パケットが消失したことを送信側、受信側が認識し、再度パケットを送り出す仕組みがTCP。

    ●WWW(World Wide Web)

    インターネットに公開された文書が互いにリンクで網目のように繋がっているさまをWorld Wide Webと呼ぶ。

    ●Webの世界観

    • インターネット上に散らばるリソースは、ハイパーテキストによって相互接続される。リソース(ドキュメント)はHTMLで記述する
    • リソースに対する閲覧、編集といった操作はHTTPプロトコルで実行する。ブラウザを使えばHTTPによるリソース操作が視覚的に実施できる

    ●ネットワークアプライアンス

    通信の規制を行うファイアウォールなど通信の特定の処理を行う機器のこと

    ●プロキシ

    • フォワードプロキシ(プロキシ):クライアントの代わりに指定された宛先にアクセスし、情報を取得する。これによりクライアントがアクセスする先を検問したり、アクセスログを収集する。クライアントが直接インターネットにアクセスし、不正なアクセスをすることを防止できる。
    • リバースプロキシ:様々なクライアントから来るリクエストを複数のWebサーバに分散させることができる。また、不正なアクセスを拒否したり、負荷の重いTLSの暗号化処理を代行する。

    ●CDN(Content Delivery Network)

    Webサーバの負荷を軽減し、コンテンツを安定的に配信するためのコンテンツ配信ネットワーク。

    • 代理サーバ(キャッシュサーバ)が、オリジンサーバ(=大元のサーバ)に代わってコンテンツを配信
    • ユーザから最も近いキャッシュサーバがアクセス要求に応答することで、表示・配信を高速化

    ●カプセル化

    データを送信する際に必要な情報(ヘッダーなど)を順番に追加していく仕組み

  • Azure Well-Architected Framework(WAF)についてまとめてみた

    ●Azure Well-Architected Framework(WAF)とは?

    システム設計の基本原則。以下5つの柱から構成されている。

    ①信頼性

    ②セキュリティ

    ③コスト最適化

    ④オペレーショナルエクセレンス

    ⑤パフォーマンス効率

    ※④:オペレーション(業務の管理・運用)の効率・向上を目指すことによって、競合他社が真似できない、その企業独自の優位性を保つ状態

    また、具体的な設計例については、WAFに基づいたAzureランディングゾーン(Azure Landing Zone:ALZ)というアーキテクチャを定義している。

  • クラウド移行戦略についてまとめてみた

    ●クラウド移行する動機

    ①インフラコストの削減

    ②ハードウェアやOS、ミドルウェアなどの運用コストの削減

    ③機能追加やアプリケーション開発のスピードアップ

    ④セキュリティの向上

    ⑤自社のオンプレミスでは実現できない高可用性の実現

    ●クラウド移行に関する4つの戦略

    ①リホスト:

    IaaSの仮想サーバサービスに移行する戦略(クラウドリフト&シフトと呼ばれることもある)

    基本的にOS以上のレイヤー(階層)をそのままパブリッククラウドに移行させることを主眼とし、物理インフラに関するコスト削減を目的として採用されることが多い戦略。

    ※As-is(現状の構成)のままクラウドへ移行

    ②リファクター:

    システムの一部にPaaSを取り入れることで、運用コストに関する課題解決も視野に入れる戦略。

    ※クラウドを最大限に活用するように最小限の変更を加える

    ③リアーキテクト:

    既存のアプリケーションに対して、よりビジネスに合わせたスケーラビリティ(拡張性)や迅速性を取り入れることを目的に最適化を行うことを主眼とした戦略。

    ※例:他システムでも利用したいユーザデータをマイクロサービス化することで、他システムから利用可能する

    ※アプリケーションをサービスに合わせ大幅に変更・分解する

    ④リビルド:

    クラウドの機能を活用することを前提(クラウドネイティブアーキテクチャ)にアプリケーションを再構築する戦略。

    ※クラウドネイティブアプローチで書かれた新しいコード

    ※その他

    ・リタイア:システム廃止

    ・リデイン:オンプレミスに残置

    ・リロケート:オンプレミスと同じテクノロジーを利用できる環境に移行

    ・リパーチェース:既存システムを廃止してSaaSに移行

    ●モダナイゼーション戦略

    ・モダナイゼーション:

    老朽化したIT資産を最新化するだけでなく、企業の競争力強化を目的とした、DXを実現するための取り組み。

    ①リホスト:マイグレーション

    ②リファクタ、③リアーキテクト:モダナイゼーション

    ④リビルド:イノベーション

  • RFCとは?

    Request for Commentsの略。

    IETF(Internet Enginnering Task Face:インターネット技術特別調査委員会)が公開する、インターネットの技術仕様などを取りまとめた文書群

  • Azure DNSについて概要をまとめてみた

    ●Azure DNSとは?

    Microsoft Azureが提供しているDNSサービスで、Azureのインフラを使用してドメインを管理し、高い可用性・セキュリティを保ちながら高速な名前解決を行います。Azure DNS 内のDNS ドメインは、Azureのグローバルネットワーク内で分散保存され、名前解決の際は最も近いDNSサーバと通信を行う(IP Anycast)ことで、高い可用性と応答性を持つことが特徴です。

    ●Azure DNSの種類

    ①AzureパブリックDNS

    ・インターネットに接続していれば誰でも利用可能なDNSサーバ

    ・インターネット上で名前解決を行うための外部向けDNS

    ・Microsoftのグローバルネットワーク内に分散配置され、高い可用性と応答性を持つDNS

    ※パブリックDNSとは、インターネット上で名前解決を行うためのDNS

    <使用に際しての手順概要>

    1.ドメイン購入

    補足)

    Azure(Microsoft社)は基本的にドメイン販売を行っていないが、Azureで直接管理されるカスタムドメインであるApp Service ドメインは購入可

    2.DNSゾーンの作成

    3.DNSゾーンの委任

    4つのネームサーバー(NS)レコードを親ドメインに登録。この作業を委任と言い、レジストラの管理サイトで行う。

    ※レジストリとレジストラ

    「レジストリ」は登録ドメイン名のデータベースを維持管理する機関であり、「レジストラ」は登録者からドメイン名の登録申請を受け付け、その登録データをレジストリのデータベースに登録する機関

    4.レコードセットの作成

    必要になるレコードをゾーンに追加すれば、インターネット利用者から名前解決できようになる

    ②AzureプライベートDNS

    ・Azure VNET(仮想ネットワーク)内で名前解決を行う内部向けDNS(DNSゾーンと1つ以上のVNetをリンク(関連付け)させる必要がある)

    ※Azure内のリソースの名前解決を提供するサービスの(VNetにデフォルトでリンクされている”168.63.129.16″を利用するため)のため、オンプレミスの環境から直接参照することはできない

    ・高い可用性/応答性と、Azureのセキュリティレベルに準じた高い安全性を持つDNS

    ・独自のカスタムドメイン名を使用できるため、企業や組織のニーズに合わせて仮想ネットワークを構成する場合に最適

    ・「自動登録」という機能があり、これを使うと手動でAzure VMのレコードセットを作成する必要がなくなります。この設定を有効にしたDNSゾーンにVNetをリンクさせると、そのVNetに接続するVMごとに自動でDNSレコード(AレコードとPTRレコード)が作成される。※1つのプライベートDNSゾーンに登録仮想ネットワークとして構成できるのは1つだけ

    ※プライベートDNSとは、インターネットではなく、独自のネットワーク内で名前解決を行うためのDNS

    <使用に際しての手順概要>

    1.プライベートDNSゾーンの作成

    2.VNetにリンク(仮想ネットワークリンク作成) ※必要に応じて自動登録を設定

    3.レコードセットの作成

    ●Azure DNSとAzure DNSゾーンの違い(簡単なイメージ)

    • Azure DNS = サービス全体(DNSをホスティングする仕組み)※IPアドレス:168.63.129.16
    • Azure DNS ゾーン = 各ドメインの設定を管理する単位(”example.com” や “mywebsite.net” のゾーン)

    つまり、Azure DNSの中で、各ドメインごとにAzure DNS ゾーンを作成して管理する、という関係。

    ●用語

    • 権威サーバ

    あるゾーンの情報を保持し、他のサーバに問い合わせることなく応答を返すことができるサーバのこと。 権威サーバー(権威DNSサーバ)は、自身が管理するゾーン及び委任情報(委任先の権威サーバーに関する情報)を保持し、問い合わせに対して自身が管理している情報のみを答えます

    • DNSフォワーダー

    DNSクエリを他のDNSサーバに転送する機能を持つDNSサーバです。クライアントからのDNSクエリを受信し、自身で名前解決できない場合に、あらかじめ設定されている別のDNSサーバにクエリを転送します。

    • DNSリゾルバ

    リゾルバ(resolver)とは、ドメイン名を元にIPアドレスの情報を検索したり、IPアドレスからドメイン名の情報を検索する、名前の解決(name resolution)を行うソフトウェア・プログラム

    • Azure DNS Private Resolver

    これまで必要だったAzure上にフォワーダーとして機能するDNSサーバを構成する必要がなく、オンプレミスからAzureプライベートDNSへ名前解決要求を転送できる機能。

    ※とてもわかりやすかったので紹介