Sunteți pe pagina 1din 54

CLOUD COMPUTING

CURSUL 01 INTRODUCERE

Facultatea de Automatică și Calculatoare


Universitatea Tehnică “Gheorghe Asachi” din Iași
2021-2022
Cuprins

I. Descrierea disciplinei
II. Introducere în Cloud Computing
III. Containerizare și Docker

2
I
Descrierea disciplinei

Desfășurarea orelor
 Cursul – 2h la fiecare două săptămâni
 Laboratorul – 2h în fiecare săptămână (obligatoriu)

Titulari de disciplină
 Ș.l. dr. ing. Adrian ALEXANDRESCU
 Ș.l. dr. ing. Cristian Nicolae BUȚINCU

3
I
Metode de evaluare

 Activitatea din timpul laboratorului – 20% (min. 5)


 Evaluarea finală – colocviu – 80% (min. 5)
 Proiect – 25%
 Test scris – 75% (min. 5)

4
I
Descrierea cursului

 Introducere în cloud computing - caracteristici cloud, modele de


servicii, furnizori de servicii, aplicații și paradigme
 Infrastructura și arhitectura cloud - orchestrarea și gestionarea
serviciilor, dezvoltarea aplicațiilor Cloud, gestionarea resurselor și
planificarea
 Platforme computaționale și aplicații serverless
 Servicii de notificare
 Virtualizarea resurselor
 Open-Source Cloud Computing: Open Stack, Open Shift (cu Docker,
Kubernetes)
 Sisteme de stocare - modele, stocare, sisteme de fișiere, baze de date
 Securitatea în cloud

5
II
Introducere în Cloud Computing

1. Scurt istoric
2. Definiții
3. Motivații și avantajele Cloud
4. Resurse IT
5. Provizionare Cloud

6
II
Scurt Istoric

 În 1961, profesorul John McCarthy a descris noțiunea


de „computing utilitar” (en., utility computing) la
Centenarul MIT.
“If computers of the kind I have advocated become the
computers of the future, then computing may someday be
organized as a public utility just as the telephone system is
a public utility. […] Each subscriber needs to pay only for the
capacity he actually uses, but he has access to all
programming languages characteristic of a very large
system. Certain subscribers might offer service to other
subscribers. The computer utility could become the basis of
a new and important industry.”
7
II
Scurt Istoric

 În 1969, Leonard Kleinrock, om de știință din cadrul


Advanced Research Projects Agency Network
(ARPANET) care a contribuit la crearea Internetului, a
declarat:
"As of now, computer networks are still in their infancy, but
as they grow up and become sophisticated, we will probably
see the spread of 'computer utilities' ...".
 La sfârșitul anilor 1990, Salesforce.com a fost pionier
în ideea de a aduce servicii furnizate de la distanță în
zona enterprise. (en., remotely provisioned services)

8
II
Scurt Istoric

 În 2002, Amazon.com a lansat platforma Amazon Web


Services (AWS), o suită de servicii orientate către
întreprinderi, care oferă stocare de la distanță,
resurse de calcul și funcționalitate de afaceri.
 În 2006, Amazon.com a lansat Elastic Compute Cloud
(EC2) care a permis organizațiilor să „închirieze”
capacitatea de calcul și puterea de procesare pentru a
rula aplicațiile enterprise

9
II
Scurt Istoric

 În 2008, Google lansează Google App Engine (GAE), o


platformă ca serviciu (PaaS), care permite
dezvoltatorilor să găzduiască aplicații web în centrele
de date gestionate de Google
 În 2010, Microsoft lansează platforma Azure, un
serviciu de calcul computațional în Cloud
 În 2010, Rackspace și NASA dezvoltă o platformă
gratuită open source pentru cloud computing –
Openstack (din 2016 este administrată de OpenStack
Foundation)

10
II
Scurt Istoric

 În 2011, IBM lansează SmartCloud, care oferă


tehnologii cloud computing de întreprindere pentru
construirea de cloud privat, public și hibrid
 În 2013, Google lansează Google Cloud Platform, care
include Google Compute Engine – permite
utilizatorilor să lanseze mașini virtuale la cerere

11
II
Definiții

 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGIES


(NIST) - 2011
“Cloud computing is a model for enabling ubiquitous,
convenient, on-demand network access to a shared pool of
configurable computing resources (e.g., networks, servers,
storage, applications, and services) that can be rapidly
provisioned and released with minimal management effort
or service provider interaction. This cloud model is
composed of five essential characteristics, three service
models, and four deployment models.”

12
II
Definiții

 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGIES


(NIST) - 2011
Caracteristici esențiale:
- Autoservire la cerere (en., On-demand self-service)
- Acces larg la rețea (en., Broad network access)
- Combinarea resurselor (en., Resource pooling)
- Elasticitate rapidă (en., Rapid elasticity)
- Serviciu măsurat (en., Measured service)

13
II
Definiții

 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGIES


(NIST) - 2011
Modele de servicii:
- Software as a Service (SaaS)
- Platform as a Service (PaaS)
- Infrastructure as a Service (IaaS)

14
II
Definiții

 NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGIES


(NIST) - 2011
Modele de implementare (en., deployment):
- Private cloud
- Community cloud
- Public cloud
- Hybrid cloud

15
II
Definiții

 INTERNATIONAL DATA CORPORATION (IDC) - 2008


“Cloud Services are the consumer and business products,
services, and solutions that are delivered and consumed in
real time over the Internet.
Cloud Computing is an emerging IT development,
deployment, and delivery model, enabling real-time delivery
of products, services and solutions over the Internet.”

16
II
Definiții

 GARTNER - 2008
“Cloud computing is a style of computing in which scalable
and elastic IT-enabled capabilities are provided as a service
using Internet technologies to multiple external customers.”

17
II
Definiții

 FORRESTER RESEARCH - 2009


“[Cloud computing is] a standardized IT capability (services,
software, or infrastructure) delivered via Internet
technologies in a pay-per-use, self-service way.”

18
II
Definiții

 CIO MAGAZINE - 2009


“[Cloud computing is] the dynamic provisioning of IT
capabilities (hardware, software, or services) from third
parties over a network.”
“Cloud computing is computing model, not a technology. In
this model of computing, all the servers, networks,
applications and other elements related to data centers are
made available to IT and end users via the Internet, in a
way that allows IT to buy only the type and amount of
computing services that they need. The cloud model differs
from traditional outsourcers in that customers don’t hand
over their own IT resources to be managed.”

19
II
Motivații și avantaje cloud

 Cloud Computing a apărut pentru a satisface nevoia


de acces facil la spațiu de stocare, servicii, aplicații și
alte resurse de calcul fără a se baza pe servere locale
sau computere personale.
 În ceea ce privește o companie startup sau o
persoană care necesită acces la resurse și servicii, pot
fi identificate mai multe motivații care permit apariția
cloud computing.

20
II
Motivații și avantaje cloud

1. Accesibilitate / Reducere costuri


Clienții plătesc doar pentru resursele pe care le utilizează
 Nu este nevoie de un spațiu fizic pentru a găzdui calculatoare
și servere
 Nu există cheltuieli generale de la administrarea unei
infrastructuri de calcul sau de stocare:
 personalul tehnic necesar pentru menținerea mediului operațional
 upgrade-uri și patch-uri care introduc teste suplimentare și cicluri de
implementare
 facturi pentru utilități și investiții pentru cheltuieli de capital pentru
energie electrică și răcire
 măsuri de securitate și control al accesului care trebuie menținute și
puse în aplicare pentru a proteja resursele infrastructurii
 personalul administrativ și contabil care poate fi solicitat să țină
evidența licențelor și a aranjamentelor de asistență 21
II
Motivații și avantaje cloud

2. Fiabilitate
 Redundanța este asigurată de furnizorul de cloud
 Costul investiției realizate de furnizorul de cloud în
redundanță este distribuit pe întreaga sa bază de
clienți

22
II
Motivații și avantaje cloud

3. Scalabilitate / Planificarea capacității


Startu-purile au nevoie inițial de puține resurse, dar pe
măsură ce afacerea lor crește, la fel crește nevoia de mai
multe resurse
O infrastructură bazată pe cloud este mai versatilă din punct
de vedere al scalabilității comparativ cu o infrastructură locală
Există diferite strategii de planificare a capacității:
 Lead Strategy – adăugarea de resurse IT în anticiparea cererii
 Lag Strategy – adăugarea de resurse IT când s-a ajuns la
capacitate maximă
 Match Strategy - adăugarea de resurse IT în incremente mici
pe măsură ce crește cererea

23
II
Motivații și avantaje cloud

4. Virtualizarea
 Infrastructura IT bazată pe cloud poate fi virtualizată
și dislocată geografic
 Startup-urile nu sunt obligate să ia în considerare
locația fizică a infrastructurii sale IT și a centrelor de
date în deciziile de operare a afacerilor

24
II
Motivații și avantaje cloud

5. Agilitatea organizațională
 Companiile au nevoie de capacitatea de a se adapta și
de a evolua pentru a face față cu succes schimbărilor
cauzate atât de factori interni cât și externi.
 Agilitatea organizațională este măsura receptivității
unei organizații la schimbări.
 Presupune îmbunătățirea resurselor IT dincolo de
sfera celor prevăzute anterior sau planificate

25
II
Resurse IT

Server Server Program


fizic virtual software

Serviciu Dispozitiv Dispozitiv


de stocare de rețea

Source: https://patterns.arcitura.com/cloud-computing-patterns/basics/basic-concepts-and-terminology/it_resource 26
II
Resurse IT

Servere virtuale
Servicii
Dispozitive de
stocare

27
II
Resurse IT

Scalare
 capacitatea resursei IT de a gestiona cererile de
utilizare crescute sau diminuate

Tipuri de scalare
 Scalare pe orizontală (en., horizontal scaling)
scaling out – scaling in
 Scalare pe verticală (en., vertical scaling)
scaling up – scaling down

28
II
Resurse IT

Scalare pe orizontală
 Alocarea sau eliberarea de resurse IT de același tip

Source: https://patterns.arcitura.com/cloud-computing-patterns/basics/basic-concepts-and-terminology/scaling 29
II
IT Resources

Scalarea pe verticală
 Modernizarea sau înlocuirea unei resurse IT cu o alta
de capacitate mai mare sau mai mică

Source: https://patterns.arcitura.com/cloud-computing-patterns/basics/basic-concepts-and-terminology/scaling 30
II
Provisionare Cloud

Provizionarea Cloud reprezintă alocarea resurselor și


serviciilor unui furnizor de cloud unui client.
Tipuri de provizionare Cloud
 Advanced provisioning – clientului i se percepe o taxă
forfetară sau se facturează lunar
 Dynamic provisioning – clientului i se percepe o taxă de
tipul pay-per-use (e.g., în cazul scalării)
 User self-provisioning – clientul cumpără resurse
printr-un portal web prin crearea unui cont de
utilizator și plata resurselor cu un card de credit

31
III
Containerizare și Docker

1. Docker
2. Container
3. Container vs. Mașină virtuală
4. Containerizare
5. Automatizare vs. Orchestrare
6. Orchestrare
7. Kubernetes
8. Docker Swarm
9. Kubernetes vs. Docker Swarm
10. Ansible

32
III
Docker

Docker
 Un instrument conceput pentru a facilita crearea,
implementarea și rularea aplicațiilor utilizând containere.
Container
 Permite unui dezvoltator să împacheteze o aplicație cu
toate componentele de care are nevoie, cum ar fi
bibliotecile și alte dependențe, și să le expună pe toate ca
un singur pachet.
Containerizarea
 Implică încapsularea unei aplicații într-un container cu
propriul său mediu de operare.

33
III
Docker

Source> https://blog.usejournal.com/what-is-docker-in-simple-english-a24e8136b90b 34
III
Container

Container
 Un proces care rulează cu funcții de încapsulare
adăugate.
 Este ținut izolat de gazdă și de alte containere.
 Fiecare container interacționează cu propriul sistem
de fișiere private; acest sistem de fișiere este furnizat
de o imagine Docker.
 O imagine include tot ceea ce este necesar pentru a
rula o aplicație - codul sau codul compilat, rulările,
dependențele și orice alte obiecte ale sistemului de
fișiere necesare.

35
III
Container vs. Mașină virtuală

 Un container rulează nativ pe Linux și împarte nucleul


mașinii gazdă cu alte containere. Acesta rulează un
proces discret și nu ia mai multă memorie decât orice
alt executabil, fiind lightweight.
 În schimb, o mașină virtuală (VM) rulează un sistem
de operare „oaspete” cu acces virtual la resursele
gazdă printr-un hipervizor. În general, VM-urile
suportă multe cheltuieli (en., overhead) dincolo de
ceea ce este consumat de logica aplicației tale.

36
III
Container vs. Mașină virtuală

Virtual machines Containers

Source: https://www.electronicdesign.com/technologies/dev-tools/article/21801722/whats-the-difference-between-containers-and-virtual-machines 37
III
Containerizare

 Containerizarea presupune gruparea (en., bundling)


unei aplicații împreună cu toate fișierele sale de
configurare, bibliotecile și dependențele necesare
pentru ca acesta să poată fi rulată într-un mod eficient
și fără bug-uri în diferite medii de calcul.
 Containerele garantează eficient că aplicațiile vor rula
la fel oriunde.
 Aplicațiile containerizate pot fi mutate și scalate pe
nori și centre de date.

38
III
Containerizare

 Flexibilă: chiar și cele mai complexe aplicații pot fi


containerizate.
 Lightweight: containerele folosesc și împărtășesc
nucleul gazdă, ceea ce le face mult mai eficiente în
ceea ce privește resursele sistemului decât mașinile
virtuale.
 Portabile: pot fi construite (en., build) local, încărcate
(en., deploy) în cloud, și rula oriunde.

39
III
Containerizare

 Loosely coupled: containerele sunt extrem de


autosuficiente și încapsulate, permițându-vă să
înlocuiți sau să actualizați unul fără a deranja altele.
 Scalable: puteți crește și distribui automat replicile
containerului într-un centru de date.
 Secure: containerele aplică constrângeri și izolații
agresive proceselor fără nici o configurație necesară
din partea utilizatorului.

40
III
Automatizare vs. Orchestrare

 Automatizarea ajută eficientizarea unei afaceri prin


reducerea sau înlocuirea interacțiunii umane cu
sistemele IT și folosirea software-ului pentru a efectua
sarcini pentru a reduce costurile, complexitatea și
erorile
 Orchestrarea reprezintă configurarea, gestionarea și
coordonarea automată a sistemelor, aplicațiilor și
serviciilor informatice.

41
III
Automatizare vs. Orchestrare

 Automatizarea se referă la automatizarea unei


singure sarcini

 Orchestrarea este modul în care puteți automatiza un


proces sau un flux de lucru care implică mai mulți pași
pe mai multe sisteme disparate.
 Orchestrarea poate automatiza: provizionarea
serverului, gestionarea incidentelor, orchestrarea
cloud, gestionarea bazelor de date, orchestrarea
aplicațiilor, și alte sarcini și fluxuri de lucru.

42
III
Orchestrarea

Orchestratori
 Instrumente pentru gestionarea, scalarea și
întreținerea aplicațiilor containerizate
 Exemple: Ansible, Kubernetes, Docker Swarm

43
III
Kubernetes

Kubernetes este un sistem open source pentru:


 Automatizarea deployment-ului
 Scalare
 Managementul aplicațiilor containerizate

44
III
Kubernetes

Pod-uri
 grupuri de containere localizate care împărtășesc
unele resurse
Deployment-uri
 grupuri scalabile de pod-uri menținute automat de
Kubernetes
Fișiere Kubernetes YAML
 descrie toate componentele și configurațiile aplicației
dvs. Kubernetes și poate fi folosită pentru a crea și
distruge aplicația cu ușurință

45
III
Docker Swarm

Docker Swarm furnizează instrumente pentru aplicații


containerizate din punctul de vedere a
 Scalabilității
 Rețelisticii
 Securității
 Mentenanței

46
III
Docker Swarm

Servicii
 grupuri scalabile de containere cu funcții de rețea
adăugate care sunt întreținute automat de Swarm.
Fișiere stack (Fișiere YAML)
 descrie toate componentele și configurațiile aplicației
Swarm și poate fi folosită pentru a crea și distruge
aplicația cu ușurință în orice mediu Swarm.

47
Kubernetes vs. Docker Swarm

Kubernetes
 planificarea și rețeaua (en., scheduling and
networking) sunt gestionate separat:
 deployment-urile (sau alte controlere) gestionează
planificarea containerelor ca pod-uri
 serviciile sunt responsabile numai de adăugarea funcțiilor
de rețea la aceste pod-uri
Docker Swarm
 un serviciu oferă atât facilități de planificare, cât și de
rețea, crearea de containere și furnizarea de
instrumente pentru dirijarea traficului către acestea

48
III
Ansible

Ansible este un motor de automatizare IT extrem de


simplu care automatizează:
 Provizionarea Cloud
 Managementul configurației
 Deployment-ul aplicației
 Livrarea continuă
 Orchestrarea
 Orchestrare intra-serviciu

49
III
Ansible

Ansible Playbooks (YAML files)


 descrie lucrările de automatizare
 orchestrează mai multe părți din topologia
infrastructurii tale
Ansible plain text inventory file (ini files)
 reprezintă ce mașini sunt gestionate de Ansible
 mașinile administrate sunt puse în grupuri la alegerea
utilizatorului

50
III
Ansible

 Playbook-urile conțin play-uri


 Play-urile conțin task-uri
 Task-urile conțin module

 Task-urile rulează secvențial

 Handler-ele sunt declanșate de task-uri


 Handler-ele rulează o dată la sfârșitul play-uri

51
III
Ansible

Module Ansible
 mici programe scrise pentru a fi modele de resurse
ale stării dorite a sistemului
 sunt executate de Ansible prin SSH și eliminate după
terminare

Exemplu de Playbook ->

52
53
References

 Introduction to Cloud Computing


https://awseducate.instructure.com/courses/526
 Cloud Computing Design Patterns and Mechanisms
https://patterns.arcitura.com/cloud-computing-patterns
 Docker - Orientation and setup
https://docs.docker.com/get-started/
 What’s the Difference Between Containers and Virtual
Machines?
https://www.electronicdesign.com/technologies/dev-
tools/article/21801722/whats-the-difference-between-
containers-and-virtual-machines
 How Ansible Works
https://www.ansible.com/overview/how-ansible-works

54

S-ar putea să vă placă și