Amazon Web Service
Amazon Web Service atau AWS adalah sebuah layanan server. Server tersebut adalah Amazon Elastic Compute Cloud (EC2), untuk mempersingkat dapat kita sebut sebagai instance. Konsep utama di dalam AWS adalah pay for what you use atau bayar untuk apa yang kamu gunakan. Jadi seluruh data akan terpusat di instance tersebut. Dengan kata lain instance adalah sebuah server virtual. Instance akan di jalankan di mesin host, namun akan ada beberapa instance yang menggunakan mesin host. Beberapa instance yang berbagi mesin host disebut virtual machine. Yang bertanggung jawab terhadap pembagian mesin host untuk instance adalah hypervisor. Hypervisor juga bertanggung jawab untuk mengisolasi setiap instance sehingga sebuah instance tidak mengetahui instance lain meskipun berada dalam satu mesin host. Dengan demikian hypervisor memungkinkan satu perangkat keras server terbagi menjadi banyak server dan tidak perlu lagi menyiapkan server baru selama masih tersedia.
Sumber: https://pixabay.com/id/photos/lapangan-tanah-awan-langit-horison-533541/
Setiap perusahaan dengan manajemen baik pasti memiliki data center. Di sana terdapat berbagai data penting bagi perusahaan misalnya data karyawan dan data produk. Namun tujuan dari AWS bukan untuk menyimpan data yang bersifat internal. Instance ditujukan untuk menyimpan data bahwa perusahaan dapat memberikan supply. Prinsipnya menjadi pay for what yout need atau bayar untuk apa yang kamu butuhkan. Cloud computing memungkinkan untuk implementasi dari scalability, elasticity, availability (ketersediaan untuk digunakan), high availability (membuat failover), resilience (kemampuan mengani kegagalan serta memitigasinya), reliability (berjalan secara konsisten dan benar), fault tolerance (membuat arsitektur loosely coupled), backup-restore, dan snapshot. Yang dimaksud scalability adalah kemampuan aplikasi untuk mengakomodasi pertumbuhan tanpa merubah desain sedangkan elasticity adalah sumber daya yang mudah untuk ditambah atau dikurangi dengan biaya sesuai pemakaian. Perlu dibedakan juga antara backup dan snapshot. Backup adalah kegiatan menyalin seluruh data sehingga jika datanya 2 Gb maka file backup juga bernilai 2Gb, sedangkan snapshot lebih bersifat versioning yaitu menangani terjadinya perubahan terakhir yang tidak dinginkan. Snapshot mampu bekerja pada tingkat blok, sedangkan backup biasanya hanya mampu bekerja pada tingkat objek.
Cloud Computing
Penggunaan istilah cloud yang berarti awan merepresentasikan bahwa seluruh data kita itu tersedia dimana saja, mengambang, dan tersedia setiap saat. Sebelum adanya komputasi cloud, perusahaan akan membuat data center sendiri. Penerapannya ada tiga, yaitu:
- Cloud-based Deployment {cloud}
- On-premises Deployment {data center}
- Hybrid Deployment {data center berhubungan dengan cloud}
Empat keuntungan utama dalam menggunakan komputasi cloud adalah: merubah face cost menjadi variable cost, mengurangi variable cost, mendunia, dan hemat waktu sehingga dapat dialokasikan ke kegiatan lain.
Konsep dalam membangun infrastruktur di AWS adalah high availability dan fault tolerance. Makna dari high availability adalah kepastian sistem dapat selalu bekerja dan diakses dengan waktu henti yang minimal, sedangkan makna dari fault tolerance adalah sistem tetap dapat berjalan walaupun beberapa komponen mengalami kegagalan. Dengan 2 konsep itu dibangunlah AWS Regions. Infrastruktur di AWS terbagi atas region, availability zones, edge locations, dan regional edge caches. Region adalah kumpulan dari minimal 2 availability zone yang merupakan data center secara fisik. Edge location juga merupakan data center namun bukan digunakan untuk menempatkan aplikasi melainkan digunakan oleh beberapa layanan AWS seperti Amazon CloudFront. Sedangkan infrastruktur regional edge caches terletak di antara server asal data dan edge locations.
Regions dibangun di seluruh dunia. Jika basis pelanggan berada di kota A misalnya maka tentu untuk mendapatkan kecepatan yang baik harus memilih lokasi region yang terdekat. Namun tidak menutup kemungkinan pemilihan region di lokasi yang lebih jauh dengan alasan biaya. Sehingga sedikitnya ada empat faktor bisnis yang menentukan pemilihan suatu region, yaitu:
- Compliance (kepatuhan), ini terkait regulasi di tempat tertentu
- Proximity (kedekatan), tentu saja alasannya adalak kecepatan
- Feature Availability (ketersediaan fitur), adakalanya sebuah region tidak memiliki fitur AWS tertentu
- Pricing (harga), biasanya terkait pajak di suatu region
Infrastruktur antar-regions dibangun berjarak puluhan mil, hal tersebut bertujuan jika terjadi bencana skala besar maka data tetap tersedia dan proses bisnis tetap dapat berjalan. Jarak yang jauh tersebut juga mempertimbangkan latensi atau waktu proses pengambilan atau pengiriman data. Dengan demikian saran terbaik adalah mengambil dua regions.
AWS Cloud Adoption Framework
Teknologi cloud tidak murah sehingga cara mengadopsi penting dipertimbangkan. Ada 6 perspektif untuk mempertimbangkannya. Dari keenam perspektif tersebut terbagi menjadi 2, yaitu sisi bisnis dan sisi teknis. Pada sisi bisnis ada bisnis itu sendiri, orang yang mengerjakan, dan pemerintah dimana bisnis tersebut akan dijalankan. Sedangkan pada sisi teknis ada platform, keamanan, dan operasi. Semua perspektif tersebut perlu dipertimbangkan secara matang agar tidak keliru dalam mengadopsi teknologi awan atau cloud technology.
AWS Well Architected Framework
Berbeda dengan CAF yang memiliki 6 perspektif di WAF ada 5 pillar yang dipertimbangkan, yaitu operational excellence (mengirim nilai dari bisnis ke pelanggan), security (memantau dan melindungi sistem), reliability (kemampuan memperbaiki kegagalan dan memitigasi terjadinya bencana), performance efficiency (menggunakan sumber daya sesuai kebutuhan), dan cost optimization (mengeliminasi sumber daya yang sebetulnya tidak dibutuhkan).
AWS Identity and Access Management
Layanan yang memungkinkan pengaturan autentikasi tersentralisasi dan akses ke sumber daya aws. IAM bisa membuat users, group, dan roles. Kebijakan atau policies dapat di terapkan ke users tersebut. Akses sumber daya dapat dilakukan melalui AWS Command Line Interface dan AWS Managemen Console. Ada 2 hal dalam permission, yaitu credentials dan IAM. Tingkat paling tinggi adalah credentials, artinya jika IAM permission tidak memperbolehkan sesuatu padahal credentials-nya memperbolehkan otomatis yang digunakan adalah permission dari credentials. Di AWS ada 5 tipe credentials, yaitu email address-password, IAM username-password, access keys, multi-factor authentication, dan key pairs. Perhatikan contoh pembuatan policies dan permission dengan JSON:
- {
- "version": "2012-10-17",
- "Statement": [
- {
- "sid": "MFA-Access",
- "Effect": "Allow",
- "Action": "ec2:*",
- "Resource": "*",
- "Condition": {
- "BoolIfExists": {
- "aws:MultiFactorAuthPresent": "true"
- },
- "IpAddress": {
- "aws:SourceIp": "1.2.3.4/32"
- }
- }
- }
- ]
- }
AWS Command Line Interface
Ada 3 jalan untuk mengakses sumber daya AWS, yaitu melalui AWS Management Console, AWS Command Line Interface, dan Software Development Kits. Jika menggunakan AWS Management Console maka user akan menggunakan GUI atau graphical user interface. Sayangnya menggunakan AWS Management Console memungkinkan lupa pada tahap tertentu, namun kelebihannya lebih user friendly. Berbeda dengan CLI yang cara berkomunikasinya menggunakan command, tentu saja tidak setiap orang nyaman menggunakannya. Praktek terbaik dalam menggunakan sumber daya AWS adalah CLI. Caranya masuk terlebih dahulu ke EC2 instance kemudian instal di dalam EC2 instance tersebut. Gunakan command:
- $ pip3 install awscli --upgrade --user
- $ aws --version
- $ aws-cli/1.16.137 Python/3.7.3 Linux/4.14.77-81.59-amzn2.x86_64 botocore/1.12.127
- $ aws configure
- AWS Access Key ID [None]: masukkan kunci akses
- AWS Secret Access Key [None]: masukkan kunci akses rahasia
- Default region name [None]: contohnya us-west-2
- Default output format [None]: json atau yaml
AWS Systems Manager
AWS Systems Manager adalah layanan manajemen yang membantu untuk mengoleksi software inventory, memasukkan patches sistem operasi, membuat system image, dan konfigurasi sistem operasi windows maupun linux.
Simple Storage Service (S3)
Data disimpan dalam bentuk objek di dalam bucket yang merupakan tempat penyimpanan yang hampir tanpa batas. Melalui internet data yang ada di S3 dapat diakses dimanapun dan kapanpun dengan syarat nama bucketnya harus unik. Ada 6 tipe S3 dengan peruntukkannya masing-masing, yaitu:
- Amazon S3 Standard : low latency
- Amazon S3 Intelligent-Tiering : automatically moving data to the most cost effective
- Amazon S3 Standard-Infrequent Access (Standard-IA) : less frequently but requires rapid access when needed
- Amazon S3 One Zone-Infrequent Access (One Zone-IA) : less frequently but requires rapid access when needed
- Amazon S3 Glacier : low cost for data archiving
- Amazon S3 Glacier Deep Archive : lowest-cost storage
EC2 Instance
Elastic Compute Cloud instance merupakan kode program yang berjalan sebagai mesin virtual di atas komputer host yang berloksi di dalam AWS availability zone. Setiap mesin virtual berjalan dengan sistem operasi seperti linux dan windows. Beberapa EC2 instance menggunakan instance store yang dikenal sebagai ephemeral storage. Data tersimpan di dalam EC2 instance sepanjang waktu running-nya, saat reboot maka data di dalam instance disimpan secara persists, sedangkan ketika instance stops atau terminates maka data yang ada di dalam instance hilang dan tidak bisa dipulihkan. Banyak EC2 instance menggunakan Amazon Elastic Block Store untuk booting. Jadi Amazon EBS menjadi tempat penyimpanan yang persists untuk menghindari data yang hilang ketika EC2 instance stopped. Ada 5 tipe jenis instance, yaitu:
- General purpose (AT, M)
- Untuk mendapatkan keseimbangan antara sumber daya compute, memory, dan jaringan.
- Compute optimized (C, H)
- Untuk yang membutuhkan performa yang tinggi dari prosesor seperti scientific modeling, gaming server, dan machine learning.
- Memory optimized (R, X, H, Z)
- Untuk yang membutuhkan performa yang cepat untuk memproses data set yang besar.
- Accelerated computing (P, D, T, I, G, F, V)
- Untuk yang membutuhkan akselerasi yang halus seperti memproses grafik atau data pattern matching.
- Storage optimized (I, D, H)
- Untuk yang membutuhkan performa yang cepat untuk memproses data set yang sangat besar.
Untuk menjaga EC2 instance dari akses pihak-pihak yang tidak bertanggung jawab maka diperlukan firewall pada level instance yaitu security group. SG bersifat statefull artinya secara default tidak akan ada yang bisa mengakses EC2 instance selama tidak diijinkan oleh SG. Di dalam SG ada outbound dan inbound rules. Seperti namanya, outbound rule artinya aturan data EC2 instance dapat diakses oleh pihak luar, sedangkan inbound rule artinya aturan data EC2 instance yang mengijinkan data masuk ke dalam EC2 instance. Praktek terbaik dalam menerapkan instance adalah jangan pernah menyimpan permanen access keys di dalam EC2 instances karena kredensial mungkin bisa dikompromikan. Di akhir sebelum meluncurkan instance ada yang disebut user data yang merupakan script yang berjalan ketika instance di luncurkan. User data berupa linux script atau powershell script. Perhatikan user data di bawah:
- Linux Shell script : untuk menjalankan file index.html di direktori /var/www/html menggunakan apache server httpd
- #!/bin/bash
- yum update -y
- yum ugrade -y
- yum install httpd -y
- systemctl start httpd
- systemctl enable httpd
- chown ec2-user
- /var/www/html
- Batch file
- <script>
- winrm quickconfig -q
- winrm set winrm/config/winrs
- @{MaxMemoryPerShellMB="300"}
- winrm set winrm/config
- @{MaxTimeoutms="1800000"}
- </script>
Perlu diingat bahwa EC2 instance memiliki metadata. Setiap instance menyediakan metadata dengan IP address 169.254.129.254. Untuk dapat mengakses EC2 instance secara remode bisa melalui SSH untuk linux atau RDP untuk windows. Perlu diketahui sebelum mengaksesnya diperlukan key pair. EC2 instance di launce melalui AWS Management Console, namun dapat juga menggunakan AWS CLI, perhatikan command untuk launch EC2 instance di bawah:
- aws ec2 run-instances
- --image-id ami-0123456789012345
- --instance-type t2.micro
- --key-name mykeypair
- --security-group-ids sg-0123456789012345
- --subnet-id subnet-0123456789012345
- --iam-instance-profile Name=EC2Admin
- --user-data file://UserData.txt
- --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'
AWS Elastic Beanstalk
Layanan yang memudahkan untuk deploying dan scaling aplikasi web. Cukup dengan mengupload kode dan AWS Elastic Beanstalk akan menangani deployment termasuk provisioning, load balancing, automatic scaling, dan pemantauan kesehatan aplikasi. AWS Elastic Beanstalk termasuk dalam kategori platform as a service atau PaaS. Walaupun ditangani oleh AWS Elastic Beanstalk namun dalam pengendalian sumber daya tetap menjadi kontrol dari pengguna, seperti instance type, database, EC2 auto scaling, update apps, server log files, dan load balancer.
Elastic Load Balancing
Secara otomatis mendistribusikan incoming application traffic ke berbagai target seperti Amazon elastic compute cloud instance, containers, dan IP address. Sebuah load balancer bekerja seperti direktur lalu lintas yang duduk di depan server dan melakukan routing terhadap request dari client. Fitur utama dari ELB adalah high availability, health checks, security, transport layer security (TLS) termination, layer4 or layer 7 load balancing, dan operational monitoring. Sedangkan menurut tipenya da 3 tipe dari ELB, yaitu application load balancer (HTTP/HTTPS), network load balancer (TCP), dan classic load balancer.
Amazon EC2 Autoscaling
Secara otomatis melakukan launching atau terminating Amazon Elastic Compute Cloud berdasarkan status kesehatan, kebijakan yang diatur user dalam Amazon CloudWatch, penjadwalan, atau dengan pemrograman tertentu. Amazon EC2 Autoscaling melakukan scale out untuk menangani demand dan melakukan scale in untuk mengurangi biaya. Kebijakan termination di Amazon EC2 Autoscaling ada 4, yaitu:
- Oldestinstance : memilih instance yang telah berjalan paling lama
- Newesrinstance : memilih instance yang telah berjalan paling singkat
- OldestLaunchConfiguration : melakukan terminates pada instance dengan konfigurasi terlama
- ClosestToNestInstanceHour : melakukan terminates pada instance yang keluar dari billing hour
Jika hendak melakukan konfigurasi auto scaling group dengan dasar sebuah pnejadwalan maka pertama buat sebuah scheduled action yang menceritakan Amazon EC2 Auto Scaling melakukan performansi aksi scaling (out or in) pada waktu yang spesifik, kemudian atur minimum, maximum, dan ukuran untuk aksi scaling. Skala otomatis bisa dikonfigurasi menjadi dinamik. Tentu saja jika ada penskalaan dengan cara penjadwalan maka ada juga penskalaan dengan cara prediktif. Maksudnya adalah adanya forecasting traffic di masa yang akan datang dengan dasar data sebelumnya.
Amazon Route 53
Amazon Route 53 adalah domain name system yang terskalakan. Selain itu Amazon Route 53 memungkinkan untuk mengatur traffic secara global melalui variasi tipe routing. Amazon Route 53 mendukung 7 kebijakan routing, yaitu
- Simple routing policy : sumber daya tersendiri yang melakukan performansi dengan fungsi untuk domain
- Weighted routing policy : menggunakan rute traffic untuk sumber daya banyak di dalam proporsi yang yang dispesifikasikan
- Latency routing policy : digunakan ketika memiliki banyak sumber daya di dalam banyak region AWS dan ingin merute traffic ke region yang menyediakan latensi terendah
- Failover routing policy : digunakan ketika ingin mengkonfigurasi kegagalan aktif dan pasif
- Geolocation routing policy (DNS query location) : digunakan ketika ingin merute traffic berdasarkan lokasi dari pengguna
- Geproximity routing policy (traffic flow to AWS region or latitude and longitude) : digunakan ketika ingin merute traffic berdasarkan sumber daya
- Multivalue answer routing policy : digunakan ketika ingin route 53 merespon kueri DNS
Amazon CloudFront
Content Delivery Network atau CDN memungkinkan diterapkan dengan Amazon CloudFront. CDN merupakan layanan penjamin keamanan pengiriman data, video, aplikasi, dan APIs untuk dilihat dengan latensi yang rendah dan kecepatan transfer yang tinggi. Untuk mengirim konten ke pengguna, Amazon CloudFront menggunakan jaringan global dari edge location. Dengan menggunakan CloudFront bisa digunakan banyak lokasi di seluruh dunia. CDN memungkinkan pengguna berinteraksi ke aplikasi dengan latensi yang lebih rendah. Amazon CloudFront memberikan nilai latensi yang lebih rendah, kecepatan transfer data yang tinggi, serta memungkinkan bekerja dengan sumber daya AWS lain. Dalam menggunakan Amazon CloudFront untuk membuat cost menjadi lebih efektif perlu diperhatikan hal seperti distribusi traffic yaitu dimana lokasi edge, tipe request HTTP atau HTTPS, dan jumlah transfer data keluar. Lokasi untuk menyimpan salinan data agar lebih cepat diakses pelanggan dilakukan oleh Amazon CloudFront di Edge Locations. Edge Locations tersebut terpisah dari regions. Selain berfungsi sebagai tempat untuk menyimpan data, Edge Locations juga berfungsi sebagai layanan domain name system (DNS).
AWS Lambda
Perlu dibedakan antara tradisional deployment dan serverless deployment. Pada tradisional deployment setidaknya perlu dilakukan penyediaan instance, update OS, install platform aplikasi, bangun dan deploy aplikasi, konfigurasi automatic scaling-load balancer, melakukan patch-secure-monitor, dan memantau aplikasi.Sedangkan pada serverless deployment cukup melakukan bangun-deploy aplikasi dan memonitor-merawat aplikasi. Nah, layanan serverless disediakan oleh AWS Lambda. Fungsi Lambda dapat dibuat hampir untuk setiap tipe aplikasi atau backend. Secara ringkas upload kode ke AWS Lambda, kemudian atur kode di Lambda Function untuk mendapatkan trigger dari layanan AWS lain seperti HTTP endpoints atau aktivitas di dalam aplikasi, dengan sederhana AWS Lambda akan menjalankan kode ketiga ada trigger, dan bayar sesuai waktu compute yang digunakan.
![]() |
sumber: aws.amazon.com |
Contohnya adalah saat pengguna menangkap gambar, kemudian gambar di simpan di dalam S3 bucket, kemudian lambda function mendapat trigger dan memanggil Amazon Rekognition, dan Amazon Rekognition mengambil gambar dari Amazon S3 untuk mengembalikan label yang akan digunakan pada properti terdeteksi.
Amazon API Gateway
API membuat perangkat lunak komputer mungkin diakses oleh developer melalui kode sehingga bisa dibangun program perangkat lunak. API bekerja sebagai perantara yang memungkinkan aplikasi saling berkomunikasi. Panggilan API adalah pesan yang dikirim ke server lain sebagai request dan kemudian mengembalikan sebuah respon ke requester. Nah, beberapa API mengikuti prinsip Representational State Transfer (REST), kemudian REST ini berkomunikasi melalui HTTP. Web dengan basis API mengikuti rancangan prinsip REST dan biasanya disebut RESTful dan memiliki standar SOAP atau Simple Object Access Protocol. Ada 6 prinsip dalam RESTful, yaitu:
- A uniform interface : client menggunakan interface yang sederhana dan seragam untuk mengakses server
- Stateless : server tidak melacak koneksi request apa dari client yang membuat over time
- Client-server architecture : client tidak mengetahui state dari server dan server tidak mengetahui state dari client
- Cacheable : REST client sebaiknya bisa melakukan cache response yang diterima dari REST server
- Layered system : RESTful mendukung sistem layer dimana client membutuhkan komunikasi ke server perantara
- Code on demand : server bisa melewati kode yang mungkin berjalan ke client seperti JavaScript
Amazon API Gateway merupakan sebuah layanan AWS yang memungkinkan developer untuk membuat, mempublikasikan, merawat, memantau, dan mengamankan application programming interfaces (APIs) di setiap skala. Amazon API Gateway bisa menjalankan APIs tanpa server sehingga sangat memungkinkan bekerjasama dengan AWS Lambda. Biasanya Amazon API Gateway dikombinasikan dengan Amazon DynamoDB, Amazon EC2, dan Amazon VPC.
Container on AWS
Masalah seperti kebutuhan meng-update operating system dan environment yang dibutuhkan untuk menjalankan perangkat lunak adalah menjadi masalah yang umum dan berulang terjadi. Container merupakan sebuah method dari sistem operasi yang tervirtualisasi. Aplikasi dan dependencies bisa berjalan di dalam sumber daya proses yang terisolasi. Keuntungan menggunakan container adalah kendali versi, produktivitas developer, efisiensi operasi, dan konsistensi environment. Aplikasi yang digunakan untuk membuat, mengatur, dan menjalankan container adalah Docker. Pada container, kode berjalan di atas Docker sedangkan Docker berada di atas sistem operasi. Karena Docker berjalan di atas sistem operasi, sedangkan sistem operasi di cloud berada di EC2 instance maka dengan kata lain Docker berjalan di atas EC2 instance.
Docker di AWS ada 2, yaitu Amazon Elastic Container Registry (Amazon ECR) dan Amazon Elastic Container Service (Amazon ECS). Amazon ECR adalah fully managed Docker container registry. Dengan menggunakan Amazon ECR dimudahkan bagi developer untuk menyimpan, mengatur, dan menyebarkan Docker container images. Amazon ECR terintegrasi dengan Amazon ECS. Amazon ECR yang mendukung Docker Registry HTTP API versi 2 ini menyimpan container image di Amazon S3 sehingga memiliki high availability dan durability. Amazon ECS adalah manajemen container dengan skalabilitas dan performansi tinggi. Amazon ECS diluncurkan di virtual private cloud atau VPC sehingga memungkinkan digunakan security group dan network access control list atau ACLs.
Kubernetes adalah perangkat lunak sumber terbuka untuk manajemen dan orkestrasi container. Kubernetes digunakan untuk mengatur cluster dari EC2 instance dan menjalankan container yang ada di atas instance. Kubernetes bekerja dengan mengatur sebuah cluster dari instance. Kubernetes berjalan berdasarkan ketersediaan sumber daya. Cara kerjanya dengan menjalankan logika grouping yang disebut pods. Dengan pods dimungkinkan menjalankan dan menskalakan banyak container secara bersama-sama. Pods ini yang secara otomatis dijalankan oleh kubernetes di dalam cluster berdasarkan sumber daya yang dibutuhkan.
Amazon Elastic Kubernetes Service atau Amazon EKS memberikan pengelolaan terhadap Kubernetes yang berkaitan infrastruktur dengan banyak AZ. Sayangnya Amazon EKS masih menjalankan Kubernetes dengan menggunakan server. Namun, tenang ada Amazon Fargate yang memungkinkan menjalankan container tanpa mengatur servers. Amazon Fargate adalah teknologi untu Amazon ECS agar container bekerja secara serverless. Dengan Amazon Fargate secara otomatis Amazon ECS dapat diskalakan, ada load balancer, dan diatur penjadwalan untuk ketersediaan container. Dalam hal ini yang diatur oleh Amazon Fargate adalah penempatan engine, pengaturan cluster, Amazon ECS agent, Docker agent, dan Amazon ECS AMI. Dengan demikian Amazon ECS ada 2 model, yaitu diluncurkan dengan EC2 instance dan diluncurkan melalui AWS Fargate.
AWS Step Functions
AWS Step Functions memungkinkan koordinasi layanan AWS ke alur kerja serverless. Contohnya antara AWS Lambda dan Amazon ECS untuk membuat fitur aplikasi yang kaya. Dengan AWS Step Functions akan didapatkan nilai produktivitas lebih baik, agility atau kemampuan mendiagnosa masalah lebih cepat, dan sistem yang lebih tangguh karena mendukung otomatis penanganan error. Di dalam step function ada yang disebut states dan state transitions. Biasanya state machine sederhana dibuat dengan command sederhana di JavaScript Object Notation atau JSON.
Amazon Redshift
Amazon Redshift adalah pengaturan penuh untuk data berskala petabyte sebagai warehouse data atau gudang data di cloud. Kesetaraannya adalah 1 petabyte sama dengan 1000 terabyte (TB), sedangkan 1 terabyte sama dengan 1000 gigabyte (GB). Yang dimaksud gudang data adalah repositori terpusat dari informasi yang bisa dianalisis untuk membuat keputusan. Dalam bisnis ada 3 kombinasi data yang disimpan dan dianalisis, yaitu database, data lake, dan data warehouse. Database ada 2 tipe yaitu SQL dan not only SQL, sedangkan data lake adalah setiap data baik yang terstruktur maupun yang tidak terstruktur di setiap skala.
Analisis merupakan hal penting bagi bisnis, tetapi untuk membangun sebuah gudang data sangat kompleks dan mahal. Banyak gudang data yang membutuhkan waktu bulanan untuk mengaturnya serta membutuhkan perangkat lunak dan perangkat keras yang mahal. Solusi dari gudang data adalah Amazon Redshift. Ada 3 fitur utama dari Amazon Redshift, yaitu tidak perlu repot mengatur gudang data, mendukung enkripsi, dan memiliki kompatibilitas yang cukup. Metode yang digunakan Amazon Redshift adalah parallel processing dimana 2 atau lebih mikroprosesor secara simultan mengambil program dan menjalankannya. Yang dimaksud mikroprosesor adalah central processing unit atau otak dari komputer. Cara kerja dari Amazon Redshift melalui leader nodes yang mengatur komunikasi dengan client programs dan semua komunikasi melalui compute nodes. Isi dari compute nodes adalah virtual core, ram, dan local disk.
Amazon Aurora
Amazon Aurora adalah pengaturan penuh atas engine dari relational database yang kompatibel dengan MySQL dan PostgreSQL. Amazon Aurora merupakan bagian dari Amazon Relational Database Service atau Amazon RDS. Amazon Aurora memiliki kecepatan lebih dari 5 kali kecepatan standar MySQL database. Ketika Amazon Aurora instance dibuat maka secara otomatis database (DB) cluster juga terbuat. Ada 2 tipe DB instance di Amazon Aurora, yaitu primary DB instance dan Aurora instance. Primary DB instance mendukung operasi read dan write, sedangkan aurora replica hanya mendukung operasi read. Dalam sebuah primary instance bisa terdapat lebih dari 15 Aurora replica. Banyaknya replica untuk mendistribusikan beban kerja read. Tidak seperti database yang lain, jika database mengalami crash maka Amazon Aurora tidak butuh melakukan redo log dari database checkpoint terakhir. Teknik ini mengurangi waktu restart setelah database mengalami crash kurang dari 60 detik dikebanyakan kasus.
AWS Database Migration Service (DMS)
Migrasi databases ke Amazon Web Service dengan cepat dan aman dapat dilakukan melalui AWS DMS. Layanan ini mendukung migrasi homogen dan heterogen. Contohnya migrasi dari Amazon S3 sebagai noSQL bisa ke Amazon RDS sebagai SQL.
Amazon VPC
Biasanya dalam membangun sumber daya computing diperlukan private IP address. Di Amazon Web Service, sebuah virtual private cloud menyediakan jaringan private yang memungkinkan definisi jariang virtual di dalam area terisolasi. Amazon VPC dapat dianalogikan sebagai data center yang didalamnya ada server hingga databases. Sebuah VPC menjangkau lebih dari satu AZ, dan memiliki komponen kunci yaitu subnet, security group, primary network interface, router, internet gateway, virtual private gateway, dan customer gateway. Jadi ketika membuat sebuah VPC maka harus didefinisikan rintang IP address, subnets, dan route tables.
Praktek terbaik dalam menentukan IP address adalah menggunakan non-overlapping rintang IP address serta batasi VPCs dengan RFC1918 untuk meminimalisir issues di routing. Format yang digunakan untuk menspesifikasikan IP address adalah CIDR atau Classless Inter-Domain Routing yang berbentuk x.x.x.x/n dimana x.x.x.x adalah sebuah IP address dengan tipe IPv4 32 bit, sedangkan /n menspesifikasikan panjang dalam bit dari prefix network. Nilai n bisa antara 0 - 32. Di dalam VPC nilai n dibatasi antara 16 atau 28. Rentang yang lebih besar ada pada nilai n terkecil yaitu 16. Di AWS sendiri ada 5 IP address yang disimpan dan tidak bisa digunakan oleh user, yaitu 10.0.0.0, 10.0.0.1, 10.0.0.2, 10.0.0.3, dan 10.0.0.255. Perhatikan karakteristik dari VPC:
- VPC bisa menjangkau banyak AZ di sebuah AWS Region
- VPC memiliki router implisit yang melakukan routing semua traffic
- VPC memiliki default route table yang menspesifikasikan route yang diijinkan keluar VPC
- Subnet hanya ada di dalam 1 availability zone
- Rentang address mengikuti CIDR block
- Subnet CIDR block dalam satu VPC tidak boleh tumpang tindih
- Lalu lintas antarsubnet mengalir melalui router implisit
Setiap VPC mungkin juga memiliki sebuah internet gateway yang ditempelkan sehingga memungkinkan lalu lintas ke internet. Ketika sebuah internet gateway ditempelkan ke sebuah VPC mungkin route table dari public subnet digunakan untuk meneruskan lalu lintas ke internet.
Sebuah elastic network interface atau NIC adalah sebuah virtual network interface yang menempel pada EC2 instance. Dengan NIC akan memberikan kemungkinan untuk EC2 instance berkomunikasi dengan jaringan. Setiap NIC memiliki 1 primer IP address, di tambah secondary IP address. Itu juga termasuk mecia access control atau MAC address dan security group. Perlu dicatat bahwa NIC yang tertempel di sebuah EC2 instance tidak bisa dilepas. Namun, bisa dibuat dan ditempelkan tambah NIC ke sebuah instance. Jumlah NIC yang bisa ditambahkan bergantung tipe dari instance. Penggunaan banyak NIC biasanya untuk keperluan penggunaan jaringan dan keamanan di VPC serta membuat sebuah manajemen hanya network interface.
Ketika AWS account dibuat maka AWS secara otomatis akan membuat default VPC dengan CIDR block dengan 172.31.0.0/16. VPC tersebut menyediakan lebih dari 65.536 alamat private dengan rentang 172.31.0.0 - 172.31.255.255. Selain itu AWS juga secara otomatis membuat komponen di dalam default VPC, yaitu sebuah internet gateway, route table, dan public subnet di setiap AZ.
Amazon EBS
Penyimpanan atau storage di AWS ada 3 kategori, yaitu instance store (ephemeral storage), Amazon EBS, dan Amazon Simple Storage Service (Amazon S3). Sedangkan level storage ada 2, yaitu block (cukup blok yang ingin dibuah tanpa mengubah keseluruhan) dan object (jka ingin mengganti satu blok maka harus mengupdate seluruh block). Nah, seperti namanya Amazon EBS memiliki level block. Setiap EBS secara otomatis melakukan replikasi di AZ-nya. Manfaat EBS adalah bisa digunakan sebagai back up dari instance ke dalam Amazon Machine Image yang kemudian disimpan dalam Amazon S3.
Sistem pembayaran Amazon EBS ada 3, yaitu general purpose (SSD), mangetic, dan provisioned IOPS (SSD). Jika general purpose digunakan maka sistem pembayaran yang dilakukan dalam GB setiap bulan, sedangkan magnetik membayar sesuai banyaknya request, dan provisioned IOPS dengan persentase per hari atau perbulan digunakan. Sedangkan tipenya ada 2, yaitu solid state drives (SSD) dan har disk drives (HDD).
Amazon Elastic File System (EFS)
Amazon EFS merupakan layanan sederhana, terskalakan, dan pengaturan penuh untuk NFS storage. Network file system (NFS) memungkinkan penyimpanan dan pengambilan data di jaringan. Amazon EFS mampu melakukan penskalaan hingga petabyte dengan latensi file system yang rendah. Amazon EFS berada dalam scope region atau pada level region. Nah, untuk mengakses file system maka perlu dibuat mount targets di dalam VPC. Setiap mount target mengikuti properti:
- ID mount target
- Subnet ID dimana akan dibuat
- File system ID dibuat untuk
- Sebuah IP address dimana file system bisa dipasangkan
- Mount target state
Amazon Glacier
Amazon Glacier merupakan layanan storage S3 dengan keamanan yang baik, ketahanan, dan biaya yang amat rendah. Biasanya digunakan untuk backup dalam jangka panjang. Pengambilan data dari Amazon Glacier ada 3 opsi, yaitu expedited (1-5 menit), standard (3-5 jam), dan bulk (5-12 jam). Sebuah vault merupakan koleksi dari beberapa arsip.
Amazon Storage Gateway
Storage dapat dilakukan dengan cara hybrid yaitu menghubungkan antara AWS cloud storage dan on-premise, penghubungnya adalah Amazon Storage Gateway. Standar protokol yang digunakan adalah network file system (NFS), server message block (SMB), dan internal small computer interface (iSCSi).
Amazon Lightsail
Mirip dengan Amazon Elastic Beanstalk yang memudahkan dalam proses deployement web application atau website, hanya saja di Beanstalk dikembangkan dengan Java, .NET, PHP, Node.js, Python, Ruby, Go, dan Docker dengan server seperti Apache, Nginx, Passenger, dan IIS, sedangkan Amazon Lightsail dikembangkan dengan WordPress, Plesk, LAMP, Node.js dan lainnya. Keduanya sama-sama mengakomodasi teknologi Node.js.
AWS Snowcone, Snowball, Snowmobile
Ketiga layanan ini adalah untuk memindahkan data dari on-premise ke cloud tanpa melalui jaringan internet. Satu Snowcone mampu membawa data lebih dari 8 TB, sedangkan satu Snowball mampu membawa data hingga 80 TB, dan satu Snowmobile mampu membawa data 100 PB.
AWS DataSync
Melakukan akselerasi secara aman untuk memindahkan data antara on-premise dan AWS storage dengan metode sinkronus. Duplikasi data dapat dilakukan dengan Network File System (NFS), Server Message Block (SMB), dan Hadoop Distributed File Systems (HDFS).
Amazon Simple Queue Service (SQS) dan Amazon Simple Notification Service (SNS)
Secara penuh diatur oleh AWS untuk antrian pesan yang memungkinkan arsitektur loosely coupled serta penskalaan microservices. Sedangkan SNS digunakan untuk berkomunikasi antaraplikasi atau application-to-application (A2A) dan application-to-person (A2P). Melalui pembuatan topik dan subscribe dimungkinkan untuk mengirim email notifikasi. Selain itu SNS juga mendukung SMS ke lebih dari 200 negara.
Amazon Transcribe
Layanan yang memungkinkan mengubah secara otomatis rekognisi suara kemudian mengubah audio menjadi text. Melalui Amazon Transcribe API, bisa dilakukan analisis file audio, bahkan secara live audio streaming dapat dikirim ke Amazon Transcribe dan melakukan pengubahan audio menjadi text dalam kondisi real-time.
Amazon Polly
Sebaliknya dengan Amazon Transcribe, Amazon Polly memungkinkan perubahan text ke audio sehingga bisa membuat applikasi berbicara. Layanan ini akan membantu aplikasi dapat bekerja dibanyak negara yang berbeda.
Amazon Kendra
Layanan yang memungkinkan pencarian dengan tingkat akurasi yang tinggi karena didukung dengan machine learning (ML). Dengan Amazon Kendra maka developers memberikan kemampuan aplikasi untuk melakukan pencarian kepada end users. Ketika pertanyaan diajukan maka algoritma machine learning akan memahami konteks dan mengembalikan hasil yang paling relevan.
Amazon Neptune
Kecepatan dan dapat diandalkan untuk membuat grafik dari database. Biasanya digunakan untuk grafik sosial dan pembaruan targeting, personalization, dan analisis.
Amazon Inspector
Otomatis memberikan penilaian keamanan sehingga membantu perbaikan keamanan dari aplikasi yang dideploy di AWS. Penilain dilakukan untuk melihat exposure, vulnerabilities, dan deviasi dari praktek terbaik. Hasil temuan akan dilihat secara detail dengan prioritas level.
AWS CloudTrail
Melakukan monitor dan merekam aktivitas akun di infrastruktur AWS. Dengan AWS CloudTrail dapat diketahui siapa melakukan apa, siapa melakukan dimana, dan siapa melakukan kapan. Misalnya saja melalui AWS CloudTrail dapat mengetahui siapa yang menghapus bucket.
AWS CloudHSM
Kalau AWS Key Management Service atau KMS merupakan layanan untuk membuat enkripsi maka AWS CloudHSM digunakan untuk mengatur atau me-manage enkripsi. HSM merupakan kependekan dari Hardware Security Module. Di belakang HSM ada instance yang berjalan.
AWS Organization
Pengaturan tersentralisasi dan pemerintahan lingkungan atau environment sejauh perkembangan dan penskalaan sumber daya AWS. Selain itu keunggulan dari AWS Organization adalah massive economy of scale atau penggunaan single billing yang memungkinkan harga lebih murah.
AWS Budgets
Mirip dengan AWS CloudWatch bedanya AWS Budgets melakukan monitor untuk pembayaran. Dengan bantuan SNS dimungkinkan membuat alert jika terjadi kelebihan biaya berdasarkan forcast sebelumnya.
AWS Cloud Development Kit
Perangkat lunak terbuka yang merupakan framework untuk menentukan sumber daya yang dibutuhkan sebuah aplikasi yang akan dikembangkan dengan bahasa pemrograman tertentu.
AWS CodeStar
Memungkinkan untuk melakukan develop, build, dan deploy aplikasi secara cepat di AWS. Keunggulannya adalah peralatan untuk CD atau continuous delivery dapat tersedia dalam hitungan menit sehingga kode dapat di release secara lebih cepat.
AWS Software Developer Kit
Sekumpulan alat dan program yang digunakan untuk developer membuat aplikasi spesifik platform yang bekerja bersama dengan Amazon S3, Amazon EC2, DynamoDB, dan yang lainnya.
Amazon SES
Simple Email Service menerapkan prinsip cost-effective, flexible, dan scalable untuk mengirim email ke setiap aplikasi. Konfigurasi secara cepat dapat dilakukan untuk mengirim email transaksi atau marketing atau email secara masal untuk berkomunikasi.
Amazon Kinesis
Layanan terkelola secara penuh untuk menjalankan aplikasi secara streaming. Keunggulannya adalah real-time data seperti video, audio, log aplikasi, bahkan hingga IoT. Selain itu Amazon Kinesis juga dapat memanfaatkan video yang streaming tadi untuk direkognisi wajah sehingga dapat memungkinkan proteksi lebih baik.
Amazon Athena
Seperti diketahui sebelumnya bahwa S3 merupakan storage level object. Namun, di Amazon level storage dapat dilakukan query dengan standar SQL. Dengan Athena tidak lagi diperlukan pekerjaan ETL atau extract, transformation, load. Biasanya Amazon Athena digunakan untuk query CloudWatch Log.
Amazon Elastic MapReduce (EMR)
EMR digunakan untuk big data sebagai dasar pembuatan machine learning yang menggunakan perangkat lunak terbuka seperti Apache Spark, Apache Hive, dan Presto. EMR juga memungkinkan tranformasi database keluar dan kedalam S3 dan DynamoDB.
Amazon Macie
Pengelolaan secara penuh data keamanan dan data privasi dengan menggunakan machine learning serta pola yang sesuai. Dengan Macie data yang bersifat sensitif dapat disimpan dengan baik walaupun terjadi penskalaan.
Amazon MemoryDB
Layanan untuk Redis atau remote dictionary server yang menimpan data key-value, sumber terbuka, dan dalam memori yang cepat. Latensi yang mencapai mikro detik memungkinkan untuk membangun arsitektur mikroservis dari online gaming dan streaming.
Amazon ElastiCache
Mendukung fleksibilitas caching in-memory serta untuk kasus real-time. ElastiCache bisa digunakan untuk caching agar akselerasi dari aplikasi menjadi lebih baik dan performansi dari database juga meningkat. ElastiCache bekerja dengan 2 in-memory caching engine, yaitu Redis dan Memcached.
AWS Security Hub
Memberikan tinjauan secara komprehensif dari keamanan di AWS serta kepatuhan terhadap standar keamanan dan praktek terbaiknya. Security Hub memungkinkan secara tersentralisasi terhadap temuan keamanan dari jaringan berbagai sumber daya yang digunakan di AWS.
AWS Service Health Dashboard
Publikasi informasi dalam hitungan menit ke menit ke dashboard. Subscribe bisa dilakukan ke sebuah RSS feed atau really simple syndication untuk menotifikasi interupsi ke setiap layanan individual.
AWS Personal Health Dashboard
Tinjauan personal mengenai status kesehatan dari layanan AWS yang menjadi kekuatan aplikasi dapat dilihat di Personal Health Dashboard. Informasi yang dihasilkan tentunya lebih spesifik dibandingkan AWS Service Health Dashboard, misalnya menerima events lost dari Amazon Elastic Block Store yang berasosiasi dengan EC2 instance.
AWS OpsWorks
Merupakan manajemen konfigurasi untuk instance dengan Chef dan Puppet. Dengan menggunakan Chef dan Puppet konfigurasi server dapat dilakukan secara otomatis.
AWS Trusted Advisor
Memberikan rekomendasi tentang praktek terbaik untuk menerapkan cloud computing di AWS. Evaluasi dilakukan dengan pemeriksaan security, performance, reduce cost, dan monitor service quotas.
AWS atau Amazon Web Service berspesialisasi di cloud computing yang menyediakan IaaS, PaaS, dan SaaS. Secara sederhana itu berarti ada 3 model cloud computing, yaitu infrastructure as a service, platform as a service, dan software as a service. Ada 4 kategori dalam persiapan infrastruktur teknologi informasi, yaitu security, networking, servers, dan storage-database. Perhatikan perbedaan terminologi antara on-premise dan AWS cloud:
- Security
- firewalls >< security group
- ACLs >< network ACL
- administrator >< IAM
- Networking
- data center >< amazon VPC
- router >< route tables
- switches >< subnets
- modem >< internet gateway
- NAT gateway : untuk menghubungkan private subnets
- Servers
- on-premise servers >< AMI, instances
- Storage and database
- direct-attached storage >< amazon EBS
- storage area network >< amazon EFS
- network-attached storage >< amazon S3
- relational database management system >< amazon RDS
Di AWS ada 25 kategori layanan mulai dari analytics, blockchain, compute, hingga storage dan AR & VR. Untuk membangun infrastruktur di cloud secara sederhana ada 4 layanan yang diperlukan, yaitu networking, compute, database, dan storage. Networking pada AWS disebut VPC atau virtual private cloud. VPC secara analog mirip dengan istilah data center di on-premise. Yang dimaksud compute di AWS adalah EC2 instance atau elastic compute cloud. EC2 instance secara analog mirip dengan istilah server di on-premise. Pembeda antara database dan storage adalah engine. Database menggunakan engine sedangkan storage tidak. Database dibedakan menjadi 2, yaitu relational dan not only relational. Di AWS database relasional bisa didapatkan melalui Amazon RDS sedangkan database not only relational bisa didapatkan melalui Amazon DynamoDB. Layanan storage di AWS diakses melaui Amazon S3 atau simple storage service.
Teknologi cloud dibuat untuk alasan efisiensi, namun jika penggunaan teknologi cloud tidak tepat justru akan berdapak sebaliknya, yaitu boros biaya. Menurut coach Reza bahwa sebuah perusahaan itu memiliki sektor pengeluaran terbesar kedua yaitu teknologi informasi, sektor pengeluaran terbesar pertama adalah marketing. Di AWS ada 3 dasar perhitungan biaya, yaitu compute, storage, dan data transfer. Biaya compute dilakukan per jam atau per detik yang dibulatkan ke atas, sedangkan biaya storage dilakukan per GB dan bukan per Gb. Pada data transfer, setiap data yang masuk ke sumber daya AWS tidak dihitung biaya, namun begitu ada data yang keluar maka akan dihitung biaya. Sama seperti di storage data transfer dihitung per GB.
AWS menekankan pay for what you use atau bayar hanya pada apa yang digunakan. Jadi hati-hati dalam menggunakan sumber daya AWS, walaupun tidak setiap penggunaan sumber daya yang ada di AWS berbayar misalnya pembuatan VPC, Elastic Beanstalk, Auto Scaling, CloudFormation, dan IAM tidaklah berbayar. Untuk mendapatkan biaya yang lebih rendah ada 3 kategori, yaitu lakukan pembayaran di awal, hindari penggunaan eceran, dan berikan optimization ke AWS untuk dapat mempermurah pembayaran. Sebelum mengadopsi teknologi cloud lakukan perhitungan biaya dengan TCO atau total cost of ownership untuk membandingkan beban antara on-permise dan cloud. Perhatikan:
- Server costs
- Hardware: server, rack chassis, power distribution units, top-of-rack switches (maintenance)
- Software: OS, virtualization licenses (maintenance)
- Facilities: space, power, cooling
- Storage costs
- Hardware: storage disk, storage area network, fiber channel switches
- Storage administration costs
- Facilities: space, power, cooling
- Network costs
- Hardware: local area network switches, load balancer bandwidth
- Network administration costs
- Facilities: space, power, cooling
- IT Labor costs
- Server administration costs