-
Notifications
You must be signed in to change notification settings - Fork 4
/
memo.txt
180 lines (148 loc) · 9.1 KB
/
memo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
★IaaS vs PaaS vs SaaS vs On-Premise
IaaS: cloud-based services, pay-as-you-go for services such as storage, networking, and virtualization.
PaaS: hardware and software tools available over the internet.
SaaS: software that’s available via a third-party over the internet.
On-premise: software that’s installed in the same building as your business.
★1. IaaS (Infrastructure as a Service).
-IaaS businesses offer services such as pay-as-you-go storage, networking, and virtualization.
-IaaS gives users cloud-based alternatives to on-premise infrastructure, so businesses can avoid investing in expensive on-site resources.
-IaaS cover the Hardware, Network, OS layer
IaaS Delivery:
Over the internet.
IaaS Advantages:
-Maintaining on-premise IT infrastructure is costly and labor-intensive.
-IaaS solutions are highly flexible and highly scalable, and you can replace it whenever you need without losing money on your initial investment.
IaaS Characteristics:
-Highly flexible and highly scalable.
-Accessible by multiple users.
-Cost-effective.
★2. PaaS (Platform as a Service).
-A PaaS vendor provides hardware and software tools over the internet, and people use these tools to develop applications. PaaS users tend to be developers.
-PaaS cover the Hardware, Network, OS, Middleware layer
PaaS Delivery:
Over the internet.
PaaS Advantages:
-PaaS is primarily used by developers who are building software or applications.
-PaaS allows the developer to focus on the creative side of app development, as opposed to menial tasks such as managing software updates or security patches.
-Any platform updates, security patches and general maintenance to their store would be the responsibility of the merchant.
PaaS Characteristics:
-Accessible by multiple users.
-Scalable – you can choose from various tiers of resources to suit the size of your business.
-Built on virtualization technology.
-Easy to run without extensive system administration knowledge.
★3. SaaS (Software as a Service).
SaaS platforms make software available to users over the internet, usually for a monthly subscription fee.
Most SaaS providers operate a subscription model with a fixed, inclusive monthly account fee.
-SaaS cover the layer of Hardware, Network, OS, Middleware, Application layer
SaaS Delivery:
Over the internet.
SaaS Advantages:
-With SaaS, you don’t need to install and run software applications on your computer (or any computer).
-You can usually access the software from any device, anytime (as long as there is an internet connection).
-You no longer need to engage an IT specialist to download the software onto multiple computers throughout your office or worry about keeping the software on every computer up-to-date.
SaaS Characteristics:
-Available over the internet.
-Hosted on a remote server by a third-party provider.
-Scalable, with different tiers for small, medium, and enterprise-level businesses.
-Inclusive, offering security, compliance, and maintenance as part of the cost.
---
★Google Cloud:
- GCE (Google Cloud Engine)
. Live Migration
- GKE (Google Kubernetes Enginer)
- GAE (Google App Engine)
★What is Serverless computing?
-cloud computing model in which the cloud provider allocates machine resources ON DEMAND, taking care of the servers on behalf of their customers.
-Client/Business Owner/Developer don't have to care about their infrastructure things (ignore the server, serverless).
-Pricing is based on the actual amount of resources consumed by an application.
-"Serverless" is a misnomer in the sense that servers are still used by cloud service providers to execute code for developers.
-However developers of serverless applications are not concerned with capacity planning, configuration, management, maintenance, operating or scaling of containers, VMs, or physical servers.
★What is Agile, CI/CD and DevOps? How they differ?
Agile:
-focus on PROCESS
-highlighting CHANGE
-emphasize DELIVERY ACCELERATION
CI/CD:
-focus on SOFTWARE-DEFINED LIFECYLE
-highlighting TOOLS
-emphasize AUTOMATION
DevOps:
-focus on CULTURE
-highlighting ROLE
-emphasize RESPONSIVENESS
★★Network
★What is different between TCP/UDP
TCP:
-Transfer Control Protocol
-信頼性の高い通信(3 way handshake: SYN -> SYN/ACK -> ACK)
-Connection型:通信状況を確立しながら、データ転送
-転送速度が低い
-用途:Web閲覧、メール送受信、ファイル転送
-デメリット:メモリ/CPUを消費する
UDP:
-User Datagram Protocol
-信頼性低い
-Connectionless型:通信状況を確認せず、データ転送(push)
-転送速度が早い
-用途:動画ストリーミング、broadcast
-デメリット:パケットロスが発生しうる
★HTTP vs HTTPS
HTTP: Hyper Text Transfer Protocol
ホームページのファイルを受け渡しするときに使う通信規約
HTTPS: Hyper Text Transfer Protocol Secure
HTTPのやりとりを暗号化している状態での通信規約(Secured with SSL/TLS)
SSL: Secure Socket Layer
TLS: Transfer Layer Security
HTTP Status code:
1xx informational response – the request was received, continuing process
2xx successful – the request was successfully received, understood, and accepted
3xx redirection – further action needs to be taken in order to complete the request
4xx client error – the request contains bad syntax or cannot be fulfilled
5xx server error – the server failed to fulfil an apparently valid request
★Virtualization vs Container
Virtualization/サーバ仮想化技術
-物理サーバ上で仮想化ソフトウェア(HyperVisor)を実行し、その上の仮想マシン(VM)ごとにGuestOS -> Middleware -> Application実行環境を管理する。
-Applicationを実行する際、ゲストOSから起動するので時間がかかることや、複数のゲストOSがCPUやメモリー、ストレージなどのサーバ資源を利用するため、リソースの無駄が生じる場合もあります。
-複数OSでH/Wリソースを共有
-OSを問わずに仮想マシンが稼働可能
-物理と同様にIP管理できる
Container:
-ホストOSのKernelを共有して、Kernel機能でOSとアプリをisolate分離
-OverHeadなしでリソースを有効活用
-APIを豊富に提供しているため、自動化可能
-IPアドレスは自動設定、外部とはNATと接続
★Container advantage vs disadvantage
コンテナ:アプリケーションの実行環境をパッケージ化し、ホストOS(Linux kernel feature)からprocessやnetworkなどのリソースをisolate(namespace/cgroup単位)した、一種の仮想環境です。アプリケーションの側からは、それぞれのコンテナは別のコンピューター上で稼働しているように見えます。
https://thinkit.co.jp/article/17301
Advantage
1.高速: アプリケーションを簡単、迅速に起動できること
VMは起動に数分必要が、コンテナは数百milisecで起動できると言われている。
コンテナ環境は少ないコマンドで構築できる
2.軽量: リソースを節約し、効率的に利用できること
HyperVisorを使わず、ホストOSのKernelを共有することで、CPU/Memといったリソースを節約
3.可搬性: アプリケーションをパッケージ化してどこでも起動可能
OnPremise/PrivateCloud/PublicCloudを選ばず、アプリケーション稼働できる
Disadvantage:
-複数のホストでのコンテナ運用が煩雑になる
-カーネルを他のコンテナと共有するため、個別に変更できない
-コンテナ環境でベースとなるOSと異なるOSのシステムを動かすことはできない
-新しい技術であり学習コストが比較的高い
-初めて現行アプリからコンテナ構成に移行するときは、作り直し部分が複数ある(Network仕組み:NAT, Security, High Availabilityなど)
★RDBMS vs NoSQL
RDBMS:
-Relational Database Management Systemの略で、関連性のあるデータを表形式で紐づけて管理するデータマネジメントシステム
-SQL言語でデータのやりとりを行う
-メリット:一貫性(Consistency), 検索(Searchability)
-Atomicity(原子性):一連の処理は、全体として実行されるか、実行されないか、どちらかであることが保証されることを指す。
-Consistency(一貫性):処理結果がある条件や整合性を保つことが保証されるという意味である。
-Isolation(独立性):実行中の途中状態が他へ影響することが無いということである。
-Durability(永続性):その処理が完了したという結果を受けた段階で、結果は失われることの無い永続的なものとしてデータベースに記録されている、ということを指している。
NoSQL:
-Not only SQLの略で、RDBMS以外のデータベースシステムを表す際に使用される
-SQL言語を使用しなくてもデータベースを使用することができる
-メリット:分散性、拡張性、データ処理速度早い
★
★
★
★
★