Webシステム開発の雑多なアウトプット

AWS、プログラム、OSS等を中心に良かった本も。

【お薦め】書籍「ソフトウェア開発55の真実と10のウソ」

f:id:web-system:20220107214413j:plain



書籍情報

  • タイトル:ソフトウェア開発55の真実と10のウソ
  • 著者  :ロバート・L・グラス
  • 訳者  :山浦 恒央
  • 発行社 :日経BP

<まえがき:紹介文より抜粋>

「ソフトウェアの開発は、しっかりと踏み固めた道を歩くようなものだ。周囲には大量の地雷が埋めてあり、焦って近道をして吹っ飛ばされた人は数しれない。この地雷原を弥うえでのアドバイスは、プロジェクトの失敗についてグラスが書いた本を、手当たり次第に読むことである。」

by アラン・M・デービス

 

対象読者

  • プロジェクト管理からコーディング、テストまでソフトウェアを開発する全ての方

  • マネージャーでコーディング経験があまりない方
    (なぜバグが多いのか不思議に思う方)

 

書籍概要

  • ジェラルド・ワインバーグや、トム・デマルコ等の書籍と同じく、古き良き時代からのソフトウェア開発における経験則が書かれており、開発手法もウォーターフォール型での話になります。

  • ソフトウェア開発の真実として、以下に関して取り上げらています。
    「人員、リソース、見積もり、再利用、複雑性、要求仕様、設計、コーディング、不良除去、テスト、レビューとインスペクション、品質、信頼性、効率、研究」

  • なぜソフトウェア開発はこれほど難しいのか、この本を読めばその原因については納得できます。
    ただし、解決方法は提示してくれません。そちらはご自分でどうぞ。

 

【AWS】S3:IP制限の設定方法

f:id:web-system:20220107203252j:plain

 

S3にIP制限をする方法

バケット設定は以下にした上でバケットポリシーでIPを制限する。

ブロックパブリックアクセス設定  ⇒ オフ
アクセスコントロールリスト (ACL) ⇒ オフ

 

バケットポリシー設定方法①

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3::: {Bucket Name}/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "{000.000.000.000}/32"
                    ]
                }
            }
        }
    ]
}

 

バケットポリシー設定方法②

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::{Bucket Name}/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "{000.000.000.000}/32"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3::: {Bucket Name}/*"
        }
    ]
}

 

 

【Kubernetes入門】(1)概要

f:id:web-system:20220107214008j:plain

 

Kubernetesの概要

  • Kubernetesは、コンテナオーケストレーションと呼ばれるツール。
  • 記載時は略してK8s。(Kとsの間が8文字の為)
  • 読み方は、クバーネティス、クーバネティス、クーベネティス、等。
  • 元々Googleが開発していたが、2014年にCNCF(Cloud Native Computing Foundation)へ寄贈された。
【公式HP】Kubernetesとは何か?

 

DockerとKubernetesの違い

Dockerとの関係

Kubernetesはコンテナを管理しますが、実際にはDocker等のコンテナ基盤ツールを利用します。

Container Runtime Interface (CRI)

Dockerとの違い

多数のコンテナを扱う場合、 Dockerは以下の事がネックになります。
そこで登場したのがKubernetesです。

  • 外部アクセスからコンテナへの負荷分散
  • コンテナ間の通信制
  • コンテナ間の共通ストレージ
  • コンテナの監視とスケーラビリティ
  • コンテナのログ

Kubernetesの機能

コンテナオーケストレーションであるKubernetesは、コンテナに対して主に以下を管理します。

  • コンテナの展開
  • コンテナへの死活監視
  • コンテナへの負荷分散
  • コンテナの自動修復
  • コンテナのスケーリング

 

Kubernetesコンポーネント

Kubernetesを構成するコンポーネントについて簡単に触れておきます。
これらコンポーネント自体もコンテナとして動き、一部は冗長化されていたりします。

 

f:id:web-system:20220105183507p:plain

Kubernetesハイレベルアーキテクチャ

 

  • Master Node (コントロールプレーン)
    • kube-apiserver     
       ‥‥ 操作受付、認証・認可。Nginx。
    • kube-controller-manager
       ‥‥ 各種コントロール
    • kube-scheduler     
       ‥‥ Podのノード割り当て。
    • etcd          
       ‥‥ データの保存。

 

  • Worker Node (データプレーン)
    • kubelet      
       ‥‥ コンテナの管理。
    • kube-proxy    
       ‥‥ Podとの通信提供。
    • Container Runtime
       ‥‥ コンテナ基盤ツール(Docker等)。
【公式HP】Kubernetesのコンポーネント

 

 

 

 

【SublimeText2】javaのコンパイルと実行をする方法

MacのSublimeText2でjavaコンパイルと実行をする方法

Javaを実行すると文字化けするので、以下のように修正。
 


{
    "cmd": ["javac -J-Dfile.encoding=UTF-8 $file_name && java -Dfile.encoding=UTF-8 $file_base_name"],
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "path": "/usr/bin/",
    "selector": "source.java",
    "shell": true
}