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
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
Max ilość CPU / VM | 128 | 96 | 56 | 128 |
Max ilość pamięci RAM / VM | 3904 | 1433 | 242 | 3800 |
Systemy operacyjne | Windows, SLES, CentOS, CoreOS, OpenSUSE, RHEL, CloudLinux, Debian, FreeBSD, Ubuntu, Oracle Linux | Windows, 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 |
SLA | S3: 99,9% EC2: 99,95% | 99.95% | 100% (dla prywatnej i publicznej sieci, oraz redundantnych rozwiązań) | 99.9% |
Moc obliczeniowa
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
Skalowalność | AWS Auto Scaling | Autoscaling | Auto Scaling | Azure Autoscaling, Virtual Machine Scale Sets, Azure App Service Scale Capability (PaaS) |
Serwery wirtualne | Elastic Compute Cloud (EC2) Instances, Amazon LightSail | Custom Machine Types, Compute Engine | IBM Virtual Servers | Azure Virtual Machines, Azure Virtual Machines & Images |
Backend process logic | – | – | – | Web Jobs |
Kontenery | EC2 Container Service (ECS), EC2 Container Registry | Kubernetes Engine | IBM Cloud Container Service | Azure Container Service (AKS), Azure Container Registry |
Mikroserwisy / Zarządzanie kontenerami | Elastic Container Service for Kubernetes (EKS) | Google Container Engine | IBM Cloud Container Service | Azure Container Service (AKS), Service Fabric, Azure Container Service (ACS) |
Batch Processing | AWS Batch | Preemptible VMs | – | Azure Batch |
Serverless | Lambda, Lambda @ Edge | Google Cloud Functions | IBM Cloud Functions | Azure Functions, Azure Event Grid |
Storage / przestrzeń dyskowa
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
Object storage | Simple Storage Services (S3) | Google Cloud Storage | IBM Cloud Object Storage | Azure Storage |
Shared file storage | Elastic File System | Google Cloud Storage FUSE | File Storage | Azure Files |
Virtual Server disk infrastructure | Elastic Block Store (EBS) | Google Persistent Disk | Block Storage | Azure Storage Disk |
Archiving – cool storage | S3 Infrequent Access (IA) | Cloud Storage | Object Storage | Azure Storage – Standard Cool |
Archiving – cold storage | S3, Glacier | Google Cloud Storage Nearline & Coldline | Backup Storage | Azure Storage – Standard Archive |
Hybrid Storage | Storage Gateway | – | – | StorSimple |
Backup | – | – | Backup Storage | Azure Backup |
Data transfer | AWS Import/Export Disk, AWS Import/Export Snowball, AWS Snowball Edge, AWS Snowmobile | Cloud Data Transfer | Data Transfer Service | Import/ Export, Azure Data Box |
Disaster Recovery | AWS Disaster Recovery | – | – | Site Recovery |
Bazy danych
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
Silniki baz danych | RDS 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/val | Dynamo DB, SimpleDB | Cloud Spanner | Db2 on Cloud | Table Storage, Azure Cosmos DB |
Narzędzia migracji | Database Migration Service | – | Lift | Azure Database Migration Service |
Caching | ElastiCache | None – App Engine only | Compose for Redis | Azure Redis Cache |
Sieć i CDN
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
Cloud virtual networking | Virtual Private Cloud (VPC) | Google Virtual Private Cloud (VPC) | VLANs | Virtual Network |
Content delivery network | CloudFront | Google Cloud CDN | Content Delivery Network | Azure Content Delivery Network |
Domain name system management | Route 53 | Google Cloud DNS | DNS | Azure DNS, Traffic Manager |
Cross – premise connectivity | AWS VPN Gateway | Cloud VPN | VPN | Azure VPN Gateway |
Dedicated network | Direct Connect | Google Cloud Interconnect | Direct Link | ExpressRoute |
Load balancing | Classic Load Balancer, Network Load Balancer, Application Load Balancer | Google Cloud Load Balancing | Load Balancer | Load Balancer, Application Gateway |
Dostęp i bezpieczeństwo
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
Firewall | Web Application Firewall | – | Firewalls | Application Gateway Web Application Firewall (in preview) |
Authorization & Authentication | Identity and Access Management (IAM), Multi-Factor Authentication, AWS Organizations | Google Cloud Identity and Access Management | Feature in webportal | Azure Active Directory, Multi-Factor Authentication, Azure Subscription and Service Management + Azure RBAC |
Encryption | Amazon S3 Key Management Service for server-side encryption, Key Management Service, CloudHSM | Google Cloud Key Management Service | Hardware Security Module, Key Protect | Azure Storage Service Encryption, Key Vault |
Security | Inspector, Certificate Manager | – | SSL Certificates, Nessus Security Scanner | Security Center, App Service Certificates |
Compliance | AWS Artifact | – | – | Microsoft Service Trust Portal |
Directory Services | AWS 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
AWS | IBM Cloud | Azure | ||
---|---|---|---|---|
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 |
Simple Email Service (SES) | – | SendGrid | – | |
Workflow | Simple Workflow Service (SWF) | Cloud Dataproc Workflow Templates | Business Rules | Logic Apps, Azure Automation |
Scheduling | – | – | Workload Scheduler | Azure Scheduler |
Messaging | Simple Queue Service (SQS) | Google Cloud Pub/Sub | Compose for RabbitMQ | Azure Queue Storage, Service Bus Queues, Topics, Relays |
API | API Gateway, Elastic Beanstalk, CodeDeploy, CodeCommit, CodePipeline, AWS Developer Tools | Google Cloud Endpoints | API Connect | API Management, Web Apps, API Apps, Cloud Services, Visual Studio Team Services, Azure Developer Tools, Power Apps |
DevOps | AWS CodeBuild, AWS Cloud9, AWS Code Star, AWS CodeCommit, AWS CodePipeline, AWS CodeDeploy, AWS X-Ray | Cloud Source Repositories | Active Deploy, Continuous Delivery, Delivery Pipeline, Globalization Pipeline, Track & Plan | Visual Studio Team Serv |
Dostęp programistyczny | Command Line Interface | Cloud Shell | – | Azure 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ą.