Z głową w chmurach? Jaką chmurę wybrać…

Na początek – czym jest „chmura obliczeniowa”?

Chmura, to nie tylko dodatkowy dysk na pliki. Bardzo ogólna definicja mówi, że:

Chmura obliczeniowa to połączenie usług i sprzętu IT, których zasoby dostępne są dla użytkowników za pośrednictwem Internetu

Niewątpliwym plusem chmury jest to, że nie musimy martwić się o sprzęt, jego awarie, upgrade, czy choćby odkurzanie – jest to zadanie i obowiązek usługodawcy (providera). Nie ma tutaj też większego znaczenia wydajność pojedynczego serwera czy pojemność pojedynczej macierzy dyskowej. Chmura to sieć. Dopiero połączone ze sobą są w stanie zagwarantować wysoką dostępność, niezawodność, czy skalowalność wertykalną (zwiększając zasoby serwera) jak i horyzontalną (dołączając kolejne serwery do klastra) w praktycznie dowolnym momencie.

Najczęściej stosowane modele usług dostępnych w chmurze

  • IaaS – Infrastructure as a Service – gdzie użytkownik korzysta z zasobów sprzętowych, wykorzystując je np. jako moc obliczeniowa. W praktyce jest to po prostu serwer wirtualny o wybranych parametrach (np. 4 rdzeniami i 16GB RAM), które w dowolnym momencie możemy zmieniać i – co ważne – w pełni zarządzamy jego systemem operacyjnym.
  • SaaS – Software as a Service – oznacza udostępnianie oprogramowania (funkcjonalności). Będą to między innymi komunikatory czy narzędzia do edycji dokumentów online. Jest to chyba najczęściej wykorzystywany przez użytkowników typ chmury obliczeniowej –  głównie nieświadomie. 
  • PaaS – Platform as a Service – ten typ chmury ma w założeniu pomóc np. programować, uruchomić i zarządzać aplikacjami bez problemów i zawiłości związanych z infrastrukturą serwerową zazwyczaj powiązanej z taką pracą. 
  • Serverless Computing – oczywiście nie chodzi o chmurę bez serwera – chodzi o sposób rozliczania, gdzie użytkownik nie jest płaci za np. ilość serwerów czy dysk, a jedynie za czasowo wykorzystane w danym momencie zasoby do służące do obsłużenia konkretnego żądania. 
  • FaaS – Function as a Service – jest to rodzaj chmury typu Serverless –  w tym przypadku uruchamiany jest konkretny kod/funkcje w reakcji na zdarzenia. Przykładowo – mechanizm uruchamiany do optymalizacji obrazków po pojawieniu się nowego na dysku
  • BaaS – Backend as a Service – to głównie usługi typu API służące do „łączenia” zasobów udostępnianych za pośrednictwem aplikacji desktopowych jak i mobilnych.

Od czego zależy wybór chmury obliczeniowej

Przede wszystkim musimy wiedzieć do czego chcemy wykorzystać usługi typu cloud – a więc cel wykorzystania. Czy będą to głównie instancje bazodanowe, a może instancje obliczeniowe, czy też po prostu aplikacje serverless lub po prostu przestrzeń na dużą ilość danych. Cel wykorzystania chmury to główne kryterium wyboru dostawcy – mimo, iż większość z nich posiada dość podobny wachlarz usług.

Kolejnym kryterium jest dostępność usług i ich geolokalizacja. Oczywiście w przypadku zwykłej, prostej strony geolokalizacja nie ma aż takiego znaczenia – jednak większe / poważniejsze portale, czy aplikacje internetowe cenią sobie to, że serwery utrzymujące ich biznes znajdują się fizycznie np. w Europie, a nie w USA – lub to, że dostają fakturę z terytorium Unii Europejskiej, a nie spoza. Nie mniej jednak ci więksi dostawcy posiadają swoje centra danych rozsiane po całym świecie i dają użytkownikom możliwość wybrania konkretnej lokalizacji fizycznej. Aż chciałoby się krzyknąć – „serwer miał być w chmurach, a nie w jakiejś Irlandii!?”

Myśl przyszłościowo – weź pod uwagę rozwój „swojej chmury”. Czy wybrany dostawca jest w stanie go zapewnić?

Ostatnim, ale nie mniej ważnym kryterium jest oczywiście cena. Ale nie tylko cena tu i teraz, za to co akurat potrzebujemy. Liczy się też cena w rozrachunku rocznym oraz przy nagłym skoku potrzeb (np. trzykrotny wzrost zainteresowania Twoim sklepem internetowym bo zainwestowałeś w reklamę).

Istnieje wiele sposobów wykorzystania chmury – kilka wybranych prezentujemy w artykule „7 sposobów wykorzystania chmury obliczeniowej

Usługi w chmurze dostępne u wybranych dostawców

Do wyboru mamy wielu publicznych dostawców, którzy specjalizują się w dość wąskich i konkretnych rozwiązaniach. My jednak skupimy się na tych, którzy świadczą usługi kompleksowo i stanowią zdecydowaną większość rynku.

Podstawowe informacje
AWSGoogleIBM CloudAzure
Max ilość CPU / VM1289656128
Max ilość pamięci RAM / VM390414332423800
Systemy operacyjneWindows, SLES, CentOS, CoreOS, OpenSUSE, RHEL, CloudLinux, Debian, FreeBSD, Ubuntu, Oracle LinuxWindows, SLES, CentOS, CoreOS, OpenSUSE, RHEL, Debian, FreeBSD, Ubuntu,Windows, CentOS, CoreOS, RHEL, CloudLinux, Debian, FreeBSD, Ubuntu,Windows, SLES, CentOS, CoreOS, OpenSUSE, RHEL, Debian, FreeBSD, Ubuntu, Oracle Linux
SLAS3: 99,9%
EC2: 99,95%
99.95%100% (dla prywatnej i publicznej sieci, oraz redundantnych rozwiązań)99.9%
Moc obliczeniowa
AWSGoogleIBM CloudAzure
SkalowalnośćAWS Auto ScalingAutoscalingAuto ScalingAzure Autoscaling, Virtual Machine Scale Sets,
Azure App Service Scale Capability (PaaS)
Serwery wirtualneElastic Compute Cloud (EC2) Instances,
Amazon LightSail
Custom Machine Types, Compute EngineIBM Virtual ServersAzure Virtual Machines,
Azure Virtual Machines & Images
Backend process logicWeb Jobs
KonteneryEC2 Container Service (ECS),
EC2 Container Registry
Kubernetes EngineIBM Cloud Container ServiceAzure Container Service (AKS),
Azure Container Registry
Mikroserwisy /
Zarządzanie kontenerami
Elastic Container Service for Kubernetes (EKS)Google Container EngineIBM Cloud Container ServiceAzure Container Service (AKS),
Service Fabric,
Azure Container Service (ACS)
Batch ProcessingAWS BatchPreemptible VMsAzure Batch
ServerlessLambda,
Lambda @ Edge
Google Cloud FunctionsIBM Cloud FunctionsAzure Functions,
Azure Event Grid
Storage / przestrzeń dyskowa
AWSGoogleIBM CloudAzure
Object storageSimple Storage Services (S3)Google Cloud StorageIBM Cloud Object StorageAzure Storage
Shared file storageElastic File SystemGoogle Cloud Storage FUSEFile StorageAzure Files
Virtual Server disk infrastructureElastic Block Store (EBS)Google Persistent DiskBlock StorageAzure Storage Disk
Archiving – cool storageS3 Infrequent Access (IA)Cloud StorageObject StorageAzure Storage – Standard Cool
Archiving – cold storageS3,
Glacier
Google Cloud Storage Nearline & ColdlineBackup StorageAzure Storage – Standard Archive
Hybrid StorageStorage GatewayStorSimple
BackupBackup Storage Azure Backup
Data transferAWS Import/Export Disk,
AWS Import/Export Snowball,
AWS Snowball Edge,
AWS Snowmobile
Cloud Data TransferData Transfer ServiceImport/ Export,
Azure Data Box
Disaster RecoveryAWS Disaster RecoverySite Recovery
Bazy danych
AWSGoogleIBM CloudAzure
Silniki baz danychRDS for MariaDB,
RDS for SQL Server,
RDS for MySQL,
RDS for Oracle DB,
RDS for Postgre SQL
SQL Server,
Google Cloud SQL,
Cloud SQL support for Postgre SQL
Compose for MySQL,
Compose for Postgre SQL
SQL Database, Azure Database for MySQL,
Azure Database for PostgreSQL
NoSQL – key/valDynamo DB,
SimpleDB
Cloud SpannerDb2 on CloudTable Storage,
Azure Cosmos DB
Narzędzia migracjiDatabase Migration ServiceLiftAzure Database Migration Service
CachingElastiCacheNone – App Engine onlyCompose for RedisAzure Redis Cache
Sieć i CDN
AWSGoogleIBM CloudAzure
Cloud virtual networkingVirtual Private Cloud (VPC)Google Virtual Private Cloud (VPC)VLANsVirtual Network
Content delivery networkCloudFrontGoogle Cloud CDNContent Delivery NetworkAzure Content Delivery Network
Domain name system managementRoute 53Google Cloud DNSDNSAzure DNS,
Traffic Manager
Cross – premise connectivityAWS VPN GatewayCloud VPNVPNAzure VPN Gateway
Dedicated networkDirect ConnectGoogle Cloud InterconnectDirect LinkExpressRoute
Load balancingClassic Load Balancer,
Network Load Balancer,
Application Load Balancer
Google Cloud Load BalancingLoad BalancerLoad Balancer,
Application Gateway
Dostęp i bezpieczeństwo
AWSGoogleIBM CloudAzure
FirewallWeb Application FirewallFirewallsApplication Gateway Web Application Firewall (in preview)
Authorization & AuthenticationIdentity and Access Management (IAM),
Multi-Factor Authentication, AWS Organizations
Google Cloud Identity and Access ManagementFeature in webportalAzure Active Directory,
Multi-Factor Authentication,
Azure Subscription and Service Management + Azure RBAC
EncryptionAmazon S3 Key Management Service for server-side encryption,
Key Management Service,
CloudHSM
Google Cloud Key Management ServiceHardware Security Module,
Key Protect
Azure Storage Service Encryption,
Key Vault
SecurityInspector,
Certificate Manager
SSL Certificates,
Nessus Security Scanner
Security Center,
App Service Certificates
ComplianceAWS ArtifactMicrosoft Service Trust Portal
Directory ServicesAWS Directory Service + Windows Server Active Directory on AWS,
Cognito,
AWS Directory Service
Azure Directory Domain Services + Windows Server Active Directory on Azure IaaS,
Azure Active Directory B2C
Pozostałe
AWSGoogleIBM CloudAzure
Monitoring & Management (DevOps)CloudWatch,
CloudTrail,
AWS X-Ray,
AWS Usage and Billing Report,
AWS Management Console
Google StackDriver,
Monitoring,
Logging,
Error Reporting,
Trace,
Debugger
Azure portal,
Azure Monitor,
Azure Application Insights,
Azure Billing API,
Log Analytics
EmailSimple Email Service (SES)SendGrid
WorkflowSimple Workflow Service (SWF)Cloud Dataproc Workflow TemplatesBusiness RulesLogic Apps,
Azure Automation
SchedulingWorkload SchedulerAzure Scheduler
MessagingSimple Queue Service (SQS)Google Cloud Pub/SubCompose for RabbitMQAzure Queue Storage,
Service Bus Queues,
Topics,
Relays
APIAPI Gateway,
Elastic Beanstalk, CodeDeploy,
CodeCommit,
CodePipeline,
AWS Developer Tools
Google Cloud EndpointsAPI ConnectAPI Management,
Web Apps,
API Apps,
Cloud Services, Visual Studio Team Services,
Azure Developer Tools,
Power Apps
DevOpsAWS CodeBuild,
AWS Cloud9,
AWS Code Star,
AWS CodeCommit,
AWS CodePipeline,
AWS CodeDeploy,
AWS X-Ray
Cloud Source RepositoriesActive Deploy, Continuous Delivery,
Delivery Pipeline,
Globalization Pipeline,
Track & Plan
Visual Studio Team Serv
Dostęp programistycznyCommand Line InterfaceCloud ShellAzure Command Line Interface (CLI), Azure PowerShell

To w końcu… jaką chmurę wybrać?

Nie sposób odpowiedzieć na to pytanie bez przeanalizowania konkretnych potrzeb. Dopiero na ich podstawie możemy zadecydować na czym nam najbardziej zależy, dobrać odpowiednie usługi do naszych potrzeb i ostatecznie wybrać optymalne… aczkolwiek rzadko „idealne” rozwiązanie.

Jedno jest pewne – wyjdzie drożej, niż można by się spodziewać. Oczywiście nie zawsze jest to problemem… i nawet nie powinno być przeszkodą do podejmowania słusznych, rozwojowych, przyszłościowych decyzji. Jednak czasami warto ponownie rozważyć potrzeby i zastanowić się nad innymi opcjami? W niektórych przypadkach, jeśli główne skrzypce gra cena, to instancja VPS czy serwer dedykowany może okazać się przestarzałą ale ciągle korzystniejszą opcją.