【Web】通信先を指定する

IPアドレス

インターネットに接続されたコンピューターに割り当てられている識別番号で、必ず一意となる。

グローバルIPアドレスとプライベートIPアドレス

グローバルIPは外線、プライベートIPは内線のようなイメージである。 プライベートIPアドレスだけではインターネットにアクセスできないため、ルーター等の機器でグローバルIPアドレスに変換する必要がある。

ポート番号

コンピューターが提供するサービス(webサービス、メールサービスなど)を指定するための番号。
IPアドレスだけでは、コンピューターの指定までしかできない。

ポートの分類

0~1023:ウェルノウンポート
メジャーなサービスやプロトコルで使用するために予約されている番号で、IANAの管理下にある。
例)HTTPであれば80番

代替ポート番号とは、デフォルトのポートがビジー状態の場合に使用されるポート番号。HTTP(80)の代替ポート番号は8080である。

1024~49151:レジスタードポート
メーカー独自のサーバーソフトウェア(特定のアプリケーション)で使用される番号。ウェルノウンポートと同様にIANAで管理されている。

49152~65535:ダイナミックポート(エフェメラルポート)
用途が決まっておらず、クライアント側でランダムに決まって使用されるポート番号。

ウェルノウンポートとレジスタードポートはサーバー側で使うもので、ダイナミックポートは通信が発生するたびにクライアント側でランダムに選ばれるもの。

ドメイン

URLで接続先のサーバーを指定するために、IPアドレスの別名として代わりに使用する。
例)example.com

ただし、コンピュータ同士の接続にはあくまでもIPアドレスが必要である。
ドメインIPアドレスを変換する仕組みをDNS(DomainNameSystem)と呼ぶ。DNSは電話帳のようなイメージで、ドメインIPアドレスが紐づいて管理されている。DNSを利用して、ドメインからIPアドレスを知ることができる。(これを名前解決と呼ぶ。)

URLにドメインが利用されている場合、必ずDNSサーバーへIPアドレスの問い合わせが発生する。

ドメイン名とホスト名

※同じ意味で使用されることもあるし、定義は人によって結構曖昧であるよう。

ドメイン

  • ネットワークを特定するための文字列(IPアドレスの代わり)。

ホスト名

  • ネットワーク上のコンピュータにつける識別文字列。
  • 一般的に「www」が使用され、URL上では省略可能。
  • ホスト名はドメインを分割するときに使用する
  • ホスト名を使って作ったドメインサブドメインと呼ぶ。
    サブドメインによって、サイト内容やアクセス先をわかりやすく分けることができる。

  • FQDN(完全修飾ドメイン名): ホスト名+ドメイン

〈ホスト名によるドメイン分割の例〉

サイト名 URL ホスト名
Yahoo! JAPAN https://www.yahoo.co.jp www
Yahoo!ニュース https://news.yahoo.co.jp news
Yahoo!ショッピング https://shopping.yahoo.co.jp shopping

参考

イラスト図解式 この一冊で全部わかるWeb技術の基本 | NRIネットコム株式会社, 小林 恭平, 坂本 陽, 佐々木 拓郎 |本 | 通販 | Amazon

ポート

ドメインとホスト

【Web】サーバーとは

Webサーバーの役割

Webサーバーは、Webブラウザからコンテンツの要求があると、必要なコンテンツをWebブラウザに送信する役割を持つ。 要求されたコンテンツを持っていないときは、「持っていない」というメッセージを返したり、別のWebサーバーに要求することもある。

WebサーバーとWebサーバーソフトウェア

Webサーバーは、コンピューターにWebサーバーソフトウェアをインストールしたものである。 Webサーバーソフトウェアを入れることで、データのやりとりなど、Webサーバーとしての動きができるようになる。 代表的なWebサーバーソフトウェアには、ApacheIIS(InternetInformationService)がある。

Webサーバーは、Webサーバーソフトウェアが入っていないとただのコンピュータでしかないため、ソフトウェアの名称自体がWebサーバーを指している場合もある。

参考

イラスト図解式 この一冊で全部わかるWeb技術の基本 | NRIネットコム株式会社, 小林 恭平, 坂本 陽, 佐々木 拓郎 |本 | 通販 | Amazon

【AWS】ECS

ECSとは

  • Amazon Elastic Container Serviceの略。
  • サービス、バッチ処理などを実行するDockerコンテナアプリケーションをAWS上で実行できるサービス。
  • ECS自体はコンテナクラスターを管理するための、コンテナ管理サービスと言える。

ECSの特徴

  • スケーリングが容易

    • 処理するデータ量に応じて、スケールアップ、スケールアウトが可能。

    • オンプレミスで物理インフラストラクチャを使用する場合、このプロセスには数週間から数ヶ月かかる。

 ※この特徴により、昨今クラウドサービスが人気となっている。

  • バッチ処理ができる

    • 処理を実行したい時だけ実行し、終了すればサーバーを停止するような使い方ができる。

    • コストパフォーマンスが高い。

キーワード

  • タスク定義

    • どのコンテナでどのDockerイメージを使用するのか、各コンテナで使用するCPUとメモリの量、タスクで使用されるIAMロールなど、タスク実行において必要なコンテナの情報を定義したもの。

    • GUIで設定することも、jsonファイルで一括指定することも可能。

  • クラスタ

    • サービス、またはタスクの論理グループ。

    • タスクを実行するために配置するEC2インスタンス

  • AWS Fargate

参考

Amazon ECSの タスク定義 - Amazon Elastic Container Service

AWS入門 - ECS・Fargate 使ってみる

ECSタスクでHello Worldしてみた | DevelopersIO

タスク定義を作ろう - マンガでわかるDocker サポートサイト

AWS ECSを構成する3つの概念(Cluster, Service, Task) - keroxpのScrapbox

【AWS】Lambda

Lambdaとは

AWS上でプログラムを実行する場所としてのサービス。
行基盤はAWS側で管理されるため、サーバーの構築は不要となる。
サポートされている言語でコーディングすることができれば、プログラムを実行することができる。

Lambdaの仕組み

タイムスケジュールや何らかのイベントをトリガーとしてプログラムを実行する。(バッチファイルを実行するようなイメージ)
S3とも連携できるため、S3にファイルがアップロードされたら、といったイベントをトリガーにすることもできる。

メリデメ

メリット

  • サーバー構築が不要。
  • プログラム実行時間と回数によって費用が発生するため、場合によってはかなりコスト削減できる。

デメリット

  • 最大実行時間は15分
    • 処理に時間がかかるようなプログラムでは利用できない。

キーワード

  • Lambda関数
    AWS Lambdaで実行するプログラムのこと。

  • FaaS(Function-as-a-Service)
    AWS Lambdaのように、サーバーレスでアプリケーション開発ができる環境を提供するサービスのこと。

関数デプロイの方法

やり方は3種類ある。

留意点

  • 実行される(Lambdaが認識してくれる)のは、ハンドラメソッド。

  • いわゆるmain()の代わりに、def lambda_handler(event, context):としてメインメソッドを作成しておく必要がある。

Python の Lambda 関数ハンドラー - AWS Lambda

※ハンドラメソッド名は、言語によって異なる。

参考

qiita.com

it-trend.jp

【LaravelでWebアプリを作る】環境構築

環境構築

Dockerでやってみることに。 以下の記事を参考にしました!

qiita.com

メモ

projectの作成でエラー

root@fbc62baf9685:# composer create-project laravel/laravel . "9.*"
  [InvalidArgumentException]
  Project directory "/var/www/bin/." is not empty.

/var/www/bin/ってどこにあるんだろって思っていたのですが、これはDockerコンテナのディレクトリで、ローカルのディレクトリに読み替えないといけなかったのですね。 そして、これはdocker-compose.ymlで定義していました。

docker-compose.ymlについてはこちらの記事に書きました。

【Docker】docker-compose.ymlの書き方

docker-compose.yml(Composeファイル)って、結局何を書いているのか?について調べてみました。
今回作成したComposeファイルは以下。

version: "3.9"
services:
  app:
    build: ./infra/php
    volumes:
      - ./src:/data
  web:
    image: nginx:1.20-alpine
    ports:
      - 8080:80
    volumes:
      - ./src:/data
      - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf
    working_dir: /data
  db:
    build: ./infra/mysql
    volumes:
      - db-store:/var/lib/mysql

volumes:
  db-store:

参考:最強のLaravel開発環境をDockerを使って構築する - Qiita

version

services

  • サービス設定
  • サービス名、というのは、作成する各コンテナの総称にあたるもの(コンテナ名ではない)。
  • Dockerイメージをどう動かすのか、を定義するのがここ。

Dockerにおけるサービスとは

アプリケーション全体における、各機能(例. データ保存、フロントの動き、バックエンドでの処理など)を指すもの。
Part 3:サービス — Docker-docs-ja 17.06 ドキュメント

書いていること

services: 
  app: #services:の一つ下のインデントレベルに、各サービス名を記載
    build: ./infra/php #ComposeFileを実行し、ビルドされるときのパス(プロジェクトで使用するディレクトリ?)
    volumes: 
      - ./src:/data # サービスコンテナがアクセスするボリューム。

docker-compose.ymlの書き方について解説してみた - Qiita

https://docs.docker.jp/compose/compose-file/index.html#volumes

メモ

Composeファイルはインデントが重要である、といろんな記事で目にしますが、 インデントによってサービスごとの設定なのか、複数のコンテナに渡っての設定なのかが変わってくるからなのですね。

【CDP】キーワード

CDP

CustomerDataPlatformの略。 つまり、顧客情報を収集するシステムのこと。 CDPで収集するデータは、自社の顧客データ(1stPartyデータ)である。 各種の顧客データは個客ごとに統合でき、この統合されたデータを各種施策ツールへ連携することができる。

〈収集するデータの例〉

自社サイト内での行動データ履歴、購買情報

DMP

DataManagementPlatformの略。 CDPと同様に、データを収集分析するプラットフォームであるが、管理できるデータの内容が異なる。 DMPで収集できるデータは、匿名の顧客情報であり、個人を特定することはできない。 属性単位での分析は可能であるため、特定のカテゴリに当てはまるユーザーを対象とした施策を打つといったことに利用できる。

〈収集するデータの例〉

Cookie、デバイスIPアドレス

CRM

CustomerRelationshipManagementの略。 広義では、顧客に適切な対応を取り顧客との良好な関係を維持・促進すること、狭義では、顧客関係管理を行うITツールのことを指す。

CDPの主な利用目的となるのが、CRMである。 近年ではオンライン上の顧客接点が増加しているため、CDPを利用したCRMのデジタル施策の強化がCRMの成果に繋がるとされる。

1st /2nd /3rd Partyデータ

CDPで収集するデータは収集元の違いによって分類される。

1st Partyデータ

自社保有の顧客データ。 Webやアプリの購買データ、リアル店舗での購買情報、接客時のカルテなど。

2nd Partyデータ

他社(パートナー企業)が収集した1st Partyデータ。 ユーザーから直接提供されていないものの、直接的に関係のある他のビジネスを経由して利用できるデータのこと。

3rd Partyデータ

自社やパートナー企業以外の第三者(データ収集を専門とするベンダーなど)が提供するデータ。 既存顧客だけでなく、より広い範囲の人に対するアプローチを検討する際に重要となる。

Cookie

Webサイトの閲覧時に、訪れたサイトや入力データ、利用環境などの情報が記録されたファイルのこと。 または、その情報を一時的にブラウザに保存する仕組み。

CDPにおいて、CookieはWeb上の識別子を指す。 サーバーまたはJavaScriptが識別子を発行し、ブラウザのCookieに保存される。 Cookieの発行元はWebサイトのドメインごとに変わり、一つのWebサイト上には複数のCookieが存在している。

例)サイトAの訪問時

サイトAのWebサーバー/自ドメインから発行されたCookieと、広告表示用のアドサーバーなど、第三者のWebサーバー/他ドメインから発行されたCookieが存在する。

この場合、自ドメインから発行しているCookieはサイトAでの1st Party Cookie、他ドメインから発行しているCookieはサイトAでの3rd Party Cookieとなる。

データの状態

CDPにおけるデータ加工において、データはその状態によって以下のように分類される。

データレイク

取得したままの未加工のデータ。生データと呼ばれる。

データウェアハウス

データを利用するにあたって構造化したデータ。

データマート

特定の用途や目的に合わせて抽出・集計し、作成したデータ。

データのタイプ

データには、構造化データと非構造化データがあり、データがテーブルで整理されているものが構造化データ、そうでないものを非構造化データと呼ぶ。 さらに、構造化データは、マスターデータとトランザクションデータに分類される。

マスターデータ

更新頻度が低く基本的な情報が格納されたデータ。

例) 顧客情報、会員情報、商品リスト、店舗リストなど

トランザクションデータ

更新頻度が高く、出来事の詳細を記録したデータ。

例)購買履歴、アクセスログなど

名寄せ

CDPでデータを統合するにあたって、複数データのIDを統合し一意化する処理のこと。

統合前の各データソースでは、元々顧客を一意に判別するためのIDが存在している。複数のデータソースを統合する際には、一意化するIDの優先度を設定する必要がある。

名寄せの例〉 まずIDの優先度を設定しておく。

優先度の低い順にIDを突合させていき、最終的に顧客を一意化するID(最も優先度の高いID)を付与する。

ファネル

漏斗の意味。

マーケティングにおいては、顧客が商品・サービスを認知するところから購入に至るまでの行動をフェーズごとに分けたものを指す。 ファネルごとの顧客構成や売上構成の傾向を把握し、顧客の状態把握に役立てる。

このフェーズは、自社に合わせて設定する。

例1)未購入客、初回購入客、2回目顧客、リピート購入客、休眠顧客

例2)申し込み以前(検討中)、仮申し込み、申し込み、離反

セグメント

顧客をニーズや特性に応じて分類すること。 セグメント化することで、コミュニケーションを最適化し購買促進につなげることができる。

CDPでは、GUIでセグメント化の処理が可能である。

ロイヤルティ

ブランドや商品、サービスに対して、顧客が抱いている長期的な愛着、信頼のこと。

(また買いたい、利用したい、と思うこと。)

購入要因(価格、機能、地理的時間的要因)を他社に超えられたとしても自社製品を選んでもらうためには、このロイヤルティが必要となる。

ロイヤルティは、行動量(webサイトの訪問数、メルマガなど通知への反応数など)で判断することになる。

LTV(LifeTimeValue)

顧客生涯価値。

ある企業やブランドと取引を始めてから終わりまでの期間(顧客ライフサイクル内)で、どれだけの利益をもたらすのかを算出したもの。

一般的に、ロイヤルティの高い顧客ほど顧客ライフサイクル内でもたらす利益は大きく、LTVが高いとされる。

休眠顧客

過去に取引があったものの、現在はストップしている状態の顧客。

※参考

www.amazon.co.jp