-->
I'm joko purnomo./Cybersecurity Specialist/

I'm joko purnomo./Cybersecurity Specialist/

Hi! My name is Joko Purnomo. I am a Cybersecurity Specialist. I work to design, improve, and install for integrated system (people, material, information, equipment, and energy). Skilled in Cybereason, Group IB, IBM QRadar, and Wazuh to specify, predict, and evaluate optimal system build.

Kunjungi profil

ABOUT ME

Resume

Personal info

Personal info

2

years of experience

3

completed projects

4

Happy customers

1

awards won


My Skills

88%
html
90%
JavaScript
98%
CSS3
68%
React
71%
Java
80%
EDR
75%
SIEM
71%
Ethical Hacking

Certification & Education

  • EC-Council Certified Incident Handler
    2025 - 2028
    EC-Council Certified Incident Handler

    Plan, Record, Triage, Notify, and Contain.

  • Digital Forensics Essentials (DFE) v1
    2023 - 2026
    Digital Forensics Essentials (DFE) v1

    Essential Practices, Principles, and Methodologies.

  • AWS Solution Architect - Associate
    2023 - 2026
    AWS Solution Architect - Associate

    Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization, Sustainability.

  • Enigma Camp
    2024
    Enigma Camp

    Java Programming

  • Purwadhika Digital Technology School
    2021
    Purwadhika Digital Technology School

    Fullstack Web Development

  • Institut Teknologi Indonesia
    2013 - 2017
    Institut Teknologi Indonesia

    Industrial Engineering

my portfolio

Works

get in touch

Contact

Contact Details

Feel free to get in touch with us. we always open to discussing new projects, creative ideas or opportunities to be part of your visions.

my products

Product

Cari Blog Ini

Money Laundering

Masyarakat umum jika diberikan istilah laundry akan terbayang pakaian kotor yang dicuci oleh petugas laundry hingga bersih, rapi, dan harum. Di dalam tindak pidana itu ada dikenal namanya tindak pidana pencucian uang atau TPPU. Nah, bagaimana money laundry itu terjadi, prinsipnya adalah ada satu kejahatan yang menghasilkan uang banyak kemudian uang itu dicuci menjadi uang yang halal kembali. Caranya macam-macam itu, bisa jadi kejahatan korupsi, kejahatan penggelapan, dari kejahatan-kejahatan lain yang bisa menghasilkan uang. Misalnya dari narkoba, uang hasil penipuan, uang hasil penggelapan pajak, uang korupsi, perburuan satwa liar (gading gajah, harimau sumatera), serta dari human trafficking.

Sumber: https://pixabay.com/id/illustrations/pencucian-uang-kejahatan-keuangan-4158796/

Dalam doktrin akademik yang namanya money laundry itu ada 3, pertama placing, kedua layering, dan ketiga integration. Placing itu uang-uang hasil kejahatan ditempatkan pada kondisi tertentu, misalnya di pasar modal dengan tujuan mengaburkan asal-usul uang. Sedangkan pada layering, mulai memilah-milah mana yang kira-kira aman, mana yang kira-kira kurang aman. Misalnya negara-negara yang bisa menyimpan uang sebesar-besarnya. Dan yang ketiga, integration itu mulai mencampuradukkan. Dioplos kalau bahasa orang umum, antara uang haram dan uang halal.

Itulah proses dari pencucian uang. Money laundry sangat berbahaya bagi kehidupan ekonomi masyarakat juga berbahaya bagi negara, kenapa, karena fast moving, uang itu bisa datang cepat dan bisa juga cepat untuk pergi. Itu biasanya ada di secondary market maka itu sering dilihat di pasar modal uangnya cepat sekali hilang dan cepat sekali masuk. Yang paling bagus adalah investasi direct atau langsung ke market real yaitu masyarakat. Tetapi pada umunya pelaku money laundry tidak mau melakukan hal itu sebelum proses pencucian uang mereka lakukan.

Para pelaku kejahatan yang mendapatkan hasil uang begitu besar khawatir jika uang mereka disimpan di bank, maka bank harus lapor ke PPATK atau Pusat Pelaporan dan Analisis Transaksi Keuangan. Kekhawatiran berikutnya adalah pajak. Petugas pajak akan memperhatikan pendapatan yang tidak wajar. Sehingga pemilik uang hasil kejahatan yang besar ini rata-rata takut untuk menyimpan di lembaga keuangan yang resmi kemudian dititipkan. Salah satu tokoh besar yang melakukan pencucian uang hasil kejahatan adalah Pablo Escobar, Dia dikenal sebagai the king of cocaine dari Kolombia. Dia adalah kriminal terkaya di dunia dengan kekayaan $30 miliar hasil memasok 96% kokain di Amerika Serikat dan menguasai 90% pasar kokain global.

Ada banyak ciri-ciri dari pelaku pencucian uang, namun ada ciri lain yang sama di berbagai belahan dunia yaitu pelaku menyamarkan dirinya dengan berpura-pura menjadi orang baik, membagi-bagikan uang. Itu juga yang dilakukan Escobar sebagai robinhood di kolombia, dia sering membagikan uang kepada rakyat miskin yang ada di daerahnya. Kemudian mendorong rakyat untuk terus menanam kokain, setelah itu dia membangun banyak fasilitas demi kepentingan publik seperti ruma sakit, stadion, dan rumah yang jumlahnya banyak sekali untuk rakyat miskin.

Pada akhirnya uang hasil kejahatan itu tidak dapat dinikmati oleh para pelakunya. Pencucian uang tersebut dilakukan pada uang kotor dengan dikaburkan, disamarkan, disebarkan kepada orang lain bisa dalam bentuk perusahaan, modal, atau barang mewah. Uang adalah penemuan terburuk manusia, tetapi dia adalah alat uji terpercaya untuk menguji manusia. Ingat di bawah usia 30 tahun jangan berharap untuk memperoleh yang disebut financial freedom. Ada krisis-krisis yang normal dihadapi oleh setiap manusia pada setiap tahapan. Yang jelas uang bisa menjadi sahabat kalau digunakan dengan baik dan didapat dengan cara-cara yang benar. Pada saat seseorang tampil berlebihan, pada saat itu pula lah mungkin dia sedang membuka tabir kejahatannya.




ref:
omeTV
rsp law auditor-youtube
Prof. Rhenald Kasali

Cara Menambahkan Lapisan Database

Untuk menentukan sistem penyimpanan maka diperlukan pertimbangan seperti skalabilitas, persyaratan penyimpanan, tipe dan ukuran objek, serta durability (tingkat ketahanan). Amazon saat ini memberikan dua tipe layanan database, yaitu database relasional dan database non-relasional. Biasanya database yang bersifat relasional digunakan untuk proses transaksi online atau OLTP dan data warehouse atau gudang.

Data relasional akan dihubungkan dengan kunci yang akan memiliki kesamaan nilai antara satu data dan data lain. Dengan adanya kesamaan nilai tersebut maka dapat dilakukan kueri atau pengambilan data melalui kunci. Untuk melakukan hal tersebut dibutuhkan bahasa pemrograman yang disebut SQL atau Structured Query Language. Tipe database relasional memiliki kemampuan skalabilitas secara vertikal.

Jika data relasional berformat tetap, yaitu kumpulan informasi disajikan dalam bentuk baris maka data non-relasional tidak berformat tetap, informasi dapat disajikan dalam bentuk baris maupun kolom. Hal itu karena yang menjadi fokus data non-relasional adalah bagaimana menampilkan data sehingga lebih mudah untuk dibaca secara visual. Data non-relasional biasanya disebut noSQL. Tipe database non-relasional memiliki kemampuan skalabilitas secara horizontal.

Database di AWS menurut performanya terbagi menjadi dua yaitu terkelola atau managed dan tidak terkelola atau unmanaged. Di layanan tidak terkelola sekitar 50% aktivitas database dilakukan oleh AWS dan sisanya oleh user, sedangkan di layanan terkelola hampir 90% aktivitas database dilakukan oleh AWS sehingga user hanya melakukan aktivitas yang memberikan nilai tambah saja. Di antara kegiatan database adalah:

  1. App optimization
  2. Scaling
  3. High availability
  4. Database backups
  5. DB s/w patches
  6. DB s/w installs
  7. OS patches
  8. OS installations
  9. Server maintenance
  10. Rack and stack
  11. Power, HVAC, net

Nama fitur dari database relational di AWS adalah Amazon RDS, Amazon Redshift, dan Amazon Aurora, sedangkan database non-relational adalah Amazon DynamoDB, Amazon ElastiCache, Amazon Neptune, dan Amazon DocumentDB. Agar fitur-fitur tersebut dapat diakses tentu database harus diletakkan di cloud, jika saat ini database telah ada dalam bentuk on-premise maka diperlukan migrasi data melalui layanan Amazon DMS atau database migration service. Migrasi database dapat dibagi menjadi dua, yaitu homogen dan heterogen. Untuk database yang berasal dan pergi ke engine yang sama maka cukup menggunakan layanan Amazon DMS, sedangkan untuk yang bersifat heterogen atau database sumber dan tujuan memiliki engine yang berbeda maka diperlukan Amazon SCT atau Schema Conversion Tool baru kemudian menggunakan Amazon DMS.

Sumber: anonim-arsitektur-sederhana-cloud

Langkah membuat arsitektur sederhana:

  1. EC2
    • Buka Amazon EC2 melalui AWS Management Console
    • Pilih dan pastikan region telah sesuai rencana
    • Cari di panel navigasi Elastic IPs dan pilih
    • Klik tombol Allocate Elastic IP Address
    • Pilih Amazon's Pool of IPv4 addresses dan klik Allocate
    • Elastic IP Address telah berhasil dibuat
  2. VPC
    • Buka Amazon VPC melalui AWS Management Console
    • Pastikan telah berada di VPC Dashboard dan klik tombol Launch VPC Wizard
    • Pilih VPC with Public and Private Subnet dan klik tombol Select, ikuti konfigurasi:
      • IPv4 CIDR block : 10.0.0.0/16
      • IPv6 CIDR block : No IPv6 CIDR Block
      • VPC name : app-tutorial-vpc
      • Public subnet's IPv4 CIDR : 10.0.0.0/24
      • Availability Zone : ap-southeast-1a
      • Public subnet name : App Tutorial Public
      • Private subnet's IPv4 CIDR : 10.0.1.0/24
      • Availability Zone : ap-southeast-1a
      • Private subnet name : App Tutorial Private 1
      • Elastic IP Allocation ID : Elastic IP address yang telah Anda buat sebelumnya untuk diasosiasikan dengan NAT gateway. Klik di dalam box dan pilih IP address yang ditampilkan.
      • Service endpoints : Lewati bagian ini
      • Enable DNS hostnames : Yes
      • Hardware tenancy : Default
    • Klik tombol Create VPC dan tunggu hingga selesai lalu klik tombol Ok
    • Elastic IP Address dan VPC dengan Subnet publik dan privat telah berhasil dibuat
    • Pada panel navigasi pilih Subnets dan klik tombol Create Subnet, ikuti konfigurasi:
      • VPC ID : vpc-identifier (app-tutorial-VPC)
      • Subnet name : App Tutorial Private 2
      • Availability Zone : ap-southeast-1b
      • IPv4 CIDR block : 10.0.2.0/24
    • Lalu pilih tombol Create Subnet, dan cek di menu Subnet bahwa ada dua private subnet sekarang
    • Pada panel navigasi pilih Security Group dan klik tombol Create security group, ikuti konfigurasi:
      • Security group name : app-tutorial-securitygroup
      • Description : App Tutorial Security Group
      • VPC : vpc-identifier (app-tutorial-VPC)
    • Dibagian inbound rules, klik Add rule dan ikuti konfigurasi:
      • Type : SSH
      • Source : 0.0.0.0/0 (semua IP address)
    • Klik kembali Add rule di bagian inbound rules dan ikuti konfigurasi:
      • Type : HTTP
      • Source : 0.0.0.0/0 (semua IP address)
    • Lalu klik tombol Create security group di bagian bawah
    • Security group untuk web server telah berhasil dibuat
    • Untuk membuat DB instance tetap private maka ulangi pembuatan Security Group dengan konfigurasi:
      • Security group name : app-tutorial-db-securitygroup
      • Description : App Tutorial DB Instance Security Group
      • VPC : vpc-identifier (app-tutorial-VPC)
    • Dan konfigurasi di inbound rules dengan add rule:
      • Type : MySQL/Aurora
      • Source : app-tutorial-securitygroup
    • Kemudian klik tombol Create security group
    • Security group untuk DB instance telah berhasil dibuat
  3. RDS
    • Buka Amazon RDS melalui AWS Management Console
    • Perhatikan panel navigasi dan pilih menu Subnet groups lalu klik tombol Create DB Subnet Group
    • Di bagian Subnet group details gunakan konfigurasi:
      • Name : app-tutorial-db-subnet-group
      • Description : Tutorial DB Subnet Group
      • VPC : app-tutorial-VPC (vpc-identifier)
    • Di bagian Add subnets gunakan konfigurasi:
      • Availability Zones : ap-southeast-1a, ap-southeast-1b
      • Subnets : 10.0.0.0/24, 10.0.1.0/24, dan 10.0.2.0/24
    • Lalu klik tombol Create dan DB Subnet group berhasil dibuat
    • Perhatikan panel navigasi dan pilih menu Databases kemudian klik Create databases, ikuti konfigurasi:
      • Choose a database creation method : Standard create
      • Engine options : MySQL
      • Version : MySQL 5.7.16
    • Pada bagian Templates pastikan terpilih Free tier, lalu pada bagian setting ikuti konfigurasi:
      • DB instance identifier : app-tutorial-db-instance
      • Master username : app_user
      • Auto generate a password : Matikan opsi ini
      • Master password : Isikan password sesuai keinginan Anda
      • Confirm password : Ketik ulang password
    • Pada bagian DB instance size dan storage biarkan sesuai konfigurasi default
    • Lalu pada bagian Connectivity, gunakan konfigurasi: 
      • Virtual private cloud (VPC) : app-tutorial-VPC (vpc-identifier)
      • Subnet group : app-tutorial-db-subnet-group
      • Public access : No
      • VPC security group : Choose existing 
      • Existing VPC security groups : app-tutorial-db-securitygroup (Catat! Hapuslah security group yang lain, semisal default dengan klik tombol X)
      • Availability Zone : ap-southeast-1b
      • Database port : 3306
    • Pada bagian Additional configuration isikan Sample di kolom Initial database name
    • Scroll hingga bagian bawah dan klik tombol Create database
    • DB instance akan terdaftar di halaman database dengan status Creating, tunggu beberapa menit hingga status berubah menjadi Available
    • Jika status sudah Available maka klik DB instance tersebut kemudian catat Endpoint dibagian Connectivity & security, karena itu akan digunakan untuk proses lebih lanjut
  4. EC2
    • Masuk kembali ke Amazon EC2 melalui AWS Management Console
    • Pastikan telah berada di EC2 Dashboard kemudian klik tombol Launch Instance
    • Pilih Amazon Linux 2 AMI lalu klik tombol Select
    • Pilih tipe instance t2.micro lalu klik tombol Next: Configure Instance Details dan gunakan konfigurasi:
      • Network : vpc-identifier | app-tutorial-VPC
      • Subnet : subnet-identifier | App Tutorial Public
      • Auto-assign Public IP : Enable
    • Klik tombol Next: Add Storage, biarkan konfigurasi secara default lalu klik tombol Next: Add Tags, lalu klik tombol Add another tag dan gunakan konfigurasi:
      • Key : Name
      • Value : app-tutorial-web-server
    • Klik tombol Next: Configure Security Group, pilih Select an existing security group, dan pilih Security Group yang telah dibuat sebelumnya untuk web server dan pastikan security group tersebut memiliki inbound rules untuk akses SSH dan HTTP
    • Klik tombol Review and Launch
    • Tinjau kembali EC2 Instance yang telah dibuat, jika telah sesuai maka klik tombol Launch
    • Setelah itu klik tombol Create a new key pair dan pada kolom Key pair name ketik app-tutorial-key-pair
    • Klik tombol Download Key Pair dan simpan di folder yang mudah diingat kemudian klik tombol Launch Instances
    • Klik tombol View Instances, tunggu status instance menjadi running, dan EC2 Instance telah berhasil dibuat
    • Sekarang akan diinstal Apache Web Server dengan PHP pada Instance tersebut dengan cara pilih instance yang telah dibuat kemudian klik tombol Connect, lalu salin sintaks ssh (biasanya di bagian depannya ssh -i)
    • Kemudian buka Command Prompt atau terminal pada komputer, arahkan terminal tersebut ke folder dimana Key Pair sebelumnya telah di download
    • Lalu tempelkan salinan sintaks ssh sebelumnya dan tekan tombol Enter
    • Jika berhasil akan muncul pertanyaan Are you sure you want to continue connecting (yes/no)?, maka ketik Yes dan tekan tombol enter maka otomatis akan terhubung dengan EC2 Instance
    • Sintaks yang dapat digunakan di dalam Command Prompt:
      • Perbaikan bug dan pembaruan keamanan: sudo yum update -y
      • Instal PHP, packages, dan dependencies: sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
      • Instal Apache web server: sudo yum install -y httpd
      • Memulai web server: sudo systemctl start httpd
    • Web server sekarang telah terinstal dan berjalan
    • Untuk mengecek apakah web server telah berjalan maka dapat kembali ke bagian instances dan cari Public IPv4 DNS kemudian copy-paste di browser, jika server telah berjalan maka akan muncul halaman Apache
    • Sintaks tambahan untuk pengaturan melalui Command Prompt:
      • Web server tetap berjalan setiap system boot: sudo systemctl enable httpd
      • Untuk mengijinkan ec2-user mengelola file di direktori root default untuk Apache web server maka perlu dimodifikasi ownership dan permission terhadap direktori /var/www dengan perintah:
        • sudo groupadd www
        • sudo usermod -a -G www ec2-user
        • exit
    • Login kembali melalui Command Prompt atau terminal dengan mengarahkan ke folder download key pair kemudian salin sintaks ssh
    • Jika telah berhasil login maka periksa kembali apakah group www telah tersedia atau belum dengan sintaks: groups
    • Jika telah tersedia maka outputnya adalah : [ec2-user@ip-10-0-0-129 ~]$ groups ec2-user adm wheel systemd-journal www
    • Ubah group ownership pada direktori /var/www dan konten di dalamnya ke gurp www dengan sintaks: sudo chgrp -R www /var/www
    • Ubah permission dan sub direktorinya untuk menambahkan write permission pada grup sekaligus menyetel ID group pada subdirektori yang dibuat di masa mendatang, kemudian ubah permission secara berulang untuk file yang ada di /var/www dan subdirektorinya guna menambahkan write permission pada grup dengan sintaks:
      • sudo chmod 2775 /var/www
      • find /var/www -type d -exec sudo chmod 2775 {} +
      • find /var/www -type f -exec sudo chmod 0664 {} +
    • Permission untuk Apache web server telah selesai
    • Hubungkan Apache web server ke DB instance
      • Pertama kembali ke direktori /var/www dan buat folder inc dengan sintaks:
        • cd /var/www
        • mkdir inc
      • Masuk ke folder inc kemudian buat file dbinfo.inc dan edit file tersebut dengan sintaks:
        • cd inc
        • >dbinfo.inc
        • nano dbinfo.inc
      • Copy-paste kode di bawah dan ubah db_instance_endpoint dan master password sesuai yang telah dimiliki, untuk keluar dari editing tekan tombol CTRL+X lalu tekan Y, kemudian enter,
        • <?php
        •  
        • define('DB_SERVER', 'db_instance_endpoint');
        • define('DB_USERNAME', 'app_user');
        • define('DB_PASSWORD', 'master password');
        • define('DB_DATABASE', 'sample');
        •  
        • ?>
      • Masuk ke direktori /var/www/html kemudian buat file baru dengan nama SamplePage.php dengan sintaks:
        • cd /var/www/html
        • >SamplePage.php
        • nano SamplePage.php
      • Copy-paste kode di bawah setelahnya untuk menyimpan tekan CTRL + X dan untuk keluar tekan Y lalu enter,
        • <?php include "../inc/dbinfo.inc"; ?>
        • <html>
        • <body>
        • <h1>Sample page</h1>
        • <?php
        •  
        •   /* Connect to MySQL and select the database. */
        •   $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
        •  
        •   if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
        •  
        •   $database = mysqli_select_db($connection, DB_DATABASE);
        •  
        •   /* Ensure that the EMPLOYEES table exists. */
        •   VerifyEmployeesTable($connection, DB_DATABASE);
        •  
        •   /* If input fields are populated, add a row to the EMPLOYEES table. */
        •   $employee_name = htmlentities($_POST['NAME']);
        •   $employee_address = htmlentities($_POST['ADDRESS']);
        •  
        •   if (strlen($employee_name) || strlen($employee_address)) {
        •     AddEmployee($connection, $employee_name, $employee_address);
        •   }
        • ?>
        •  
        • <!-- Input form -->
        • <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
        •   <table border="0">
        •     <tr>
        •       <td>NAME</td>
        •       <td>ADDRESS</td>
        •     </tr>
        •     <tr>
        •       <td>
        •         <input type="text" name="NAME" maxlength="45" size="30" />
        •       </td>
        •       <td>
        •         <input type="text" name="ADDRESS" maxlength="90" size="60" />
        •       </td>
        •       <td>
        •         <input type="submit" value="Add Data" />
        •       </td>
        •     </tr>
        •   </table>
        • </form>
        •  
        • <!-- Display table data. -->
        • <table border="1" cellpadding="2" cellspacing="2">
        •   <tr>
        •     <td>ID</td>
        •     <td>NAME</td>
        •     <td>ADDRESS</td>
        •   </tr>
        •  
        • <?php
        •  
        • $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES");
        •  
        • while($query_data = mysqli_fetch_row($result)) {
        •   echo "<tr>";
        •   echo "<td>",$query_data[0], "</td>",
        •        "<td>",$query_data[1], "</td>",
        •        "<td>",$query_data[2], "</td>";
        •   echo "</tr>";
        • }
        • ?>
        •  
        • </table>
        •  
        • <!-- Clean up. -->
        • <?php
        •  
        •   mysqli_free_result($result);
        •   mysqli_close($connection);
        •  
        • ?>
        •  
        • </body>
        • </html>
        •  
        •  
        • <?php
        •  
        • /* Add an employee to the table. */
        • function AddEmployee($connection, $name, $address) {
        •    $n = mysqli_real_escape_string($connection, $name);
        •    $a = mysqli_real_escape_string($connection, $address);
        •  
        •    $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
        •  
        •    if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>");
        • }
        •  
        • /* Check whether the table exists and, if not, create it. */
        • function VerifyEmployeesTable($connection, $dbName) {
        •   if(!TableExists("EMPLOYEES", $connection, $dbName))
        •   {
        •      $query = "CREATE TABLE EMPLOYEES (
        •          ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        •          NAME VARCHAR(45),
        •          ADDRESS VARCHAR(90)
        •        )";
        •  
        •      if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>");
        •   }
        • }
        •  
        • /* Check for the existence of a table. */
        • function TableExists($tableName, $connection, $dbName) {
        •   $t = mysqli_real_escape_string($connection, $tableName);
        •   $d = mysqli_real_escape_string($connection, $dbName);
        •  
        •   $checktable = mysqli_query($connection,
        •       "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'");
        •  
        •   if(mysqli_num_rows($checktable) > 0) return true;
        •  
        •   return false;
        • }
        • ?>
    • Untuk melakukan pengujian buka kembali Public IPv4 Address dari EC2 Instance di browser namun dengan tambahan /SamplePage.php
    • Jika pengujian telah berhasil maka arsitektur sederhana telah terbuat di cloud

Sumber: anonim

Arsitektur sederhana tersebut dibuat di luar jangkauan AWS Free Tier sehingga untuk menghindari biaya yang berlebihan setelah berhasil membuatnya diperlukan clean up dengan urutan:

  1. Delete RDS database instance. 
  2. Delete RDS database subnet groups (pastikan database instance telah terhapus).
  3. Terminate EC2 instance.
  4. Delete NAT gateway.
  5. Release Elastic IP addresses.
  6. Delete VPC.

Sampai di tahap ini telah dicoba fitur dari AWS yaitu Elastic Cloud Compute, Virtual Private Cloud, dan Rerational Database Service.




ref:
https://aws.amazon.com/

Menghubungkan Jaringan

Secara default antara satu jaringan dan jaringan lain akan terpisah, namun tidak menutup kemungkinan untuk menghubungkan jaringan yang terpisah tersebut untuk keperluan arsitektur tertentu. Ada beberapa jenis jaringan berikut cara menghubungkan jaringan yang berbeda tersebut, yaitu:

  1. Antara jaringan VPC dan jaringan remote (on-premise atau jaringan cloud lain)
    • Untuk menghubungkan jaringan tersebut perlu ditempatkan Virtual Private Gateway atau VGW, membuat route table khusus, memperbarui aturan security group, dan membuat koneksi VPN yang ada di AWS. VGW didukung beberapa koneksi gateway sehingga redundancy dan failover dapat diterapkan pada sisi koneksi VPN.
    • Teknik sederhana menghubungkan:
      • Di VPC (ex. mySQL di EC2) di-set menjadi IP Public dan ubah security group menjadi open port 3306
      • Catatan penting pada bagian VPC (ex. mySQL di EC2) harus diubah IP pada bind-address ke 0.0.0.0 agar dapat menerima semua akses (hati-hati dalam menggunakannya karena agak berisiko sehingga tidak disarankan)
      • Catatan lain, alternatif dari penggunaan Managed VPN Connection adalah menggunakan EC2 sebagai VPN EndPont-nya. Konfigurasi VPN AWS yaitu mikrotik dan static route perlu memperhatikan tunnel dan routing, serta firewall yang telah mengijinkan traffic. Jika terjadi kendala dalam routing bisa digunakan traceroute untuk mendeteksi terjadinya fail atau tcping dengan mengetik perintah tcping IP_ec2 3389. Sedangkan jika terjadi kendala dalam tunneling maka akan terjadi Request Time Out (RTO).
      • Catatan tambahan1, menghubungkan mikrotik onprem ke mikrotik CHR (cloud hosted router) AWS dengan instance type t3.medium. VPN menggunakan SSTP (Secure Socket Tunneling Protocol). Jika penghubungan tersebut terjadi masalah bisa gunakan Virtual Private Gateway untuk mengganti SSTP sebagai VPN dan/atau coba upgrade instace ke tipe M misalnya.
    • Gambaran VGW
      Sumber: anonim
  2. Mempercepat koneksi antara jaringan VPC dan jaringan remote
    • Untuk mendapatkan kecepatan koneksi yang lebih baik dan keamanan yang lebih tinggi dapat digunakan layanan AWS Direct Connect (DX). Jalur data dapat menjadi jauh lebih besar sekitar 1-20 Gbps. Sedikitnya ada dua jenis skenario penggunaan DX, yaitu langsung menghubungkan on-premise network dengan VGW melalui perantara DS dan dengan tambahan dukungan VPN yang tentunya dari AWS. Untuk dapat menggunakan AWS Direct Connect sedikitnya ada tiga syarat, yaitu pastikan di region AWS terdapat layanan DX, sudah bekerja sama dengan mitra AWS direct connect yang merupakan anggota AWS partner network, dan sudah bekerja sama dengan penyedia layanan independen untuk terhubung ke AWS DX.
    • Gambaran penggunaan DX tanpa VPN hampir mirip dengan gambar sebelumnya tinggal VPN connection-nya diganti dengan direct connect, sedangkan gambaran arsitektur penggunaan direct connect dan VPN dapat dilihat di bawah
      Sumber: anonim
  3. Antara jaringan VPC dan jaringan VPC
    • Untuk menghubungkan antarVPC digunakan layanan VPC Peering. Beberapa hal yang perlu diperhatikan dalam melakukan penghubungan antarVPC, yaitu hanya bisa diterapkan untuk IP private, peering dapat dilakukan di dalam maupun di luar region, hanya ada satu peering antarVPC, peering tidak bisa dilakukan secara transitif (artinya jika VPC A berhubungan dengan VPC B, dan VPC B berhubungan dengan VPC C maka VPC A tidak dapat secara langsung berhubungan dengan VPC C), tidak boleh ada blok CIDR yang tumpang tindih, dan dapat dibuat dengan akun AWS yang berbeda. 
    • Gambar hubungan antarVPC melalui VPC peering dengan route table yang harus dibuat
      Sumber: anonim
  4. Antara lebih dari dua jaringan VPC
    • Jika mengkoneksikan dua VPC dapat menggunakan VPC peering maka untuk mengkoneksikan lebih dari dua VPC menggunakan Transit Gateway. Transit gateway menggunakan topologi hub-and-spoke. Hub itu semacam bandara besar yang menjadi pusat dari sebuah kawasan atau regional, sedangkan spoke itu bandara-bandara selain hub. Dengan demikian jika spoke hendak melakukan perjalanan akan melewati hub terlebih dahulu. Bahasa mudahnya adalah bersifat sentralisasi. Sedikitnya ada dua skenario dari penggunaan transit gateway, yaitu VPC dapat saling berinteraksi dan VPC memiliki interaksi yang terpisah hal ini dapat dilakukan dengan memodifikasi route table.
    • Gambaran transit gateway:
      Sumber: anonim
  5. Antara jaringan VPC dan layanan lain
    • Adakalanya jaringan VPC hendak dikoneksikan dengan layanan AWS lainnya, hal itu dapat dilakukan dengan menggunakan VPC Endpoints secara langsung melalui IP private. Karena secara langsung melalui IP private maka tidak perlu melewati internet, NAT instance, koneksi VPN, atau DX (direct connect). Dengan VPC endpoints dapat dilakukan kendali akses atau kunci S3 bucket ke VPC tertentu. Ada 2 jenis VPC endpoints, yaitu interface endpoints dan gateway endpoints. Pembagaian VPC endpoints didasarkan pada layanan yang akan dihubungkan ke jaringan VPC.

    • Sumber: anonim

  6. Antara jaringan user dan aplikasi
    • Tujuan utama dari pembuatan aplikasi ada 2 yaitu profit dan benefit. Untuk mencapai tujuan tersebut diperlukan interaksi antara user dan aplikasi. Saat terjadi lalu lintas atau traffic yang banyak maka secara otomatis beban kerja akan menjadi lebih besar akibatnya ada waktu yang lebih lama untuk user memulai berinteraksi dengan aplikasi. Waktu yang lama ini berpotensi membuat user meninggalkan aplikasi dan akan berakibat pada turunnya profit dan benefit. Untuk mengatasi hal tersebut dibutuhkan pengaturan yang tepat antara jaringan user dan jaringan aplikasi, pengaturan itu bisa dilakukan dengan ELB atau elastic load balancing. ELB dapat mendistribusikan lalu lintas data yang masuk ke beberapa target. Saat terjadi lalu lintas data yang besar maka dapat dilakukan scaling begitu juga sebaliknya. Yang perlu diperhatikan dalam menerapkan ELB adalah penggunaan protokol (HTTP, HTTPS, TCP, SSL (secure TCP)), eksternal atau internal facing, nama DNS untuk setiap load balancer, dan kesehatan instance. Di dalam ELB sendiri terdiri atas 3 load balancer, yaitu application load balancer, network load balancer, dan classic load balancer.
    • Gambaran penerapan load balancer:
      Sumber: anonim

High availability atau ketersediaan tinggi adalah salah satu faktor berhasilnya sebuah aplikasi mencapai target profit dan benefit. High availability didefinisikan sebagai kemampuan aplikasi untuk pulih dari kegagalan atau beralih ke sumber daya sekunder dalam waktu yang masih dapat diterima.

Sumber: anonim

Biasanya sebuah aplikasi akan memiliki 2 sumber daya, yaitu primer dan sekunder. Prinsip dalam ketersediaan tinggi adalah kita tidak akan mendapatkan keuntungan lebih jika memiliki 3 atau lebih sumber daya yang diduplikasi. Ketersediaan yang tinggi tanpa domain name system yang baik akan menjadi pemborosan. Amazon route 53 merupakan layanan yang akan mengubah IP Address menjadi kata yang lebih mudah diingat. Selain itu Amazon route 53 bisa digunakan untuk mengalihkan sistem dari satu region ke region lain. Beberapa opsi routing di amazon route 53:

  • Simple round robin, permintaan merata
  • Weighted round robin, pembobotan
  • Latency-based routing, waktu tunggu
  • Health check and DNS failover, kesehatan sumber daya
  • Geolocation routing, letak geografis
  • Geoproximity routing with traffic biasing, jarak fisik
  • Multi-value answer, acak

Untuk mencapai tujuan profit dan benefit terbaik diperlukan bangunan jaringan yang robust. Pertama yang dibangun adalah jaringan dalam aplikasi dengan alat-alat koneksi yang sesuai, kedua jaringan aplikasi tersebut kemudian dihubungkan ke jaringan user.

Menghitung Subnetting

Jika diketahui perusahaan memiliki private network dengan blok IP 199.222.1.0/16 maka dapat ditentukan bahwa:

  • Subnet Mask
    • /8 : 11111111.00000000.00000000.00000000
    • /14 : 11111111.11111100.00000000.00000000
    • /24 : 11111111.11111111.11111111.00000000
    • Sehingga dapat diketahui bahwa /16 memiliki subnet mask: 11111111.11111111.00000000.00000000
  • Network ID dan Host ID
    • Dengan demikian dapat diketahui network ID: 199.222.x.x dan host ID: x.x.1.0
  • Jumlah Subnet
    • Untuk menghitung jumlah subnet gunakan rumus 2 pangkat x (dimana x adalah banyaknya angka 1 dalam oktet terakhir di subnet mask) sehingga 2 pangkat 0, jumlah subnet adalah 1.
  • Jumlah Host per Subnet
    • Untuk menghitung jumlah host per subnet gunakan rumus (2 pangkay y)-2 (dimana y, banyaknya angka 0 dalam oktet terakhir di subnet mask) sehingga (2 pangkat 8)-2, jumlah host per subnet adalah 254.
Pengurangan pada jumlah host per subnet tidak selalu dikurangi 2, ini bergantung dari perencanaan untuk digunakan pada kebutuhan lain atau penyimpanan. Menghitung subnetting ini sungguh merepotkan jika dilakukan untuk banyak perangkat, oleh sebab itu dibuat DHCP atau dynamic host configuration protocol yang merupakan protokol pada application layer yang bertugas untuk mengotomatiskan proses konfigurasi host di suatu jaringan. Dengan DHCP, sebuah perangkat bisa meminta IP address ke DHCP server saat terhubung ke jaringan dan kemudian menerima semua konfigurasi jaringan yang diperlukan. DHCP sendiri memiliki 3 cara dalam menetapkan IP address, yaitu dynamic allocation (setiap kali mengulangi hubungan dengan sebuah jaringan maka IP address berubah), automatic allocation (mirip dynamic tetapi server melacak IP address perangkat client di masa lalu), dan fixed allocation (berdasarkan MAC address).

Perlu diingat bahwa dalam IPv4 address ada yang bersifat reserved atau disimpan, yaitu network address (batas awal dan batas akhir), private IP address (membutuhkan NAT), loopback IP address (localhost address), link-local address (host menetapkan IP address sendiri), broadcast address (limited broadcast dan directed broadcast), dan default route address (0.0.0.0/0). Untuk belajar lebih baik dalam jaringan bisa menggunakan Cisco Packet Tracer. Sebelum download perlu memiliki akun Skill For All terlebih dahulu.




ref:
https://aws.amazon.com/

Disaster Recovery for Cloud Compute

Werner Vogels yang merupakan vice president Amazon mengatakan everything fails, all the time atau setiap hal mengalami kegagalan-kegagalan, di setiap waktu. Hal itu yang menjadi dasar bahwa persiapan saat menghadapi kegagalan adalah penting. Perencanaan juga terbagi berdasarkan jenis bencananya, skala kecil, besar, atau kolosal. Yang dimaksud kegagalan ini tidak hanya perangkat keras tetapi juga perangkat lunak. 

sumber: anonim

Recovery Point Objective (RPO) merupakan jumlah kehilangan data yang dapat diterima dalam waktu tertentu, sedangkan Recovery Time Objective (RTO) adalah waktu yang diperlukan setelah gangguan untuk memulihkan proses bisnis sehingga pulih seperti semula. Kedua hal itu dipertimbangkan untuk meminimalisir kehilangan bisnis dan reputasi yang buruk. Penyimpanan merupakan kunci dari disaster recovery, AWS menawarkan berbagai strategi dalam melakukan penyimpanan, yaitu:

  1. Amazon S3, mengaktifkan cross-region replication
  2. Amazon S3 Glacier, memang tujuannya untuk pengarsipan dan pencadangan
  3. Amazon EBS, membuat snapshot point-in-time
  4. Amazon Snowball, menduplikasi secara manual
  5. Amazon Sync, menyinkronkan file di on-premise atau cloud dengan Amazon Elastic File System
AWS juga menyediakan layanan backup bernama AWS Backup yang merupakan layanan terkelola untuk memusatkan dan mengotomatiskan pencadangan. Sedangkan pada kasus komputasi, menjadi penting untuk membuat instance baru di availability zone yang berbeda untuk menghindari ketidaktersediaan. Artinya menjadi penting untuk mengatur pemulihan secara otomatis dari instance EC2, saat dia reboot akan mempertahankan ID instance, IP address, elastic IP, dan konfigurasi detail lainnya. Selain instance yang perlu dikonfigurasi adalah AMI, karena AMI menjadi bagian dari prosedur pemulihan ketika terjadi gangguan.

Jika sebelumnya telah dibahas menangani bencana untuk penyimpanan dan komputasi, maka sekarang muncul pertanyaan layanan apa yang menangani bencana untuk jaringan. Jawabannya adalah Amazon Route 53 (kemampuan mengalihkan operasi), Elastic Load Balancing (fault tolerance yang besar untuk mengatasi lalu lintas yang masuk), Amazon VPC (memperluas topologi jaringan), dan AWS Direct Connect. Pada database tentu saja layanan untuk menangani bencana dimiliki oleh Amazon RDS (snapshot region berbeda, read replica multi-AZ, hingga automated backup) dan Amazon DynamoDB (backup table dalam hitungan detik).

Bagian penyimpanan, komputasi, jaringan, dan database telah dilakukan penanganan terjadinya bencana. Sekarang giliran deployment yang menangani terjadinya bencana melalui AWS CloudFormation (gunakan template), AWS Elastic Beanstalk (deploy ulang stack), dan AWS OpsWorks (kombinasikan dengan CloudFormation). Sudah ada 5 kategori yang perlu untuk dilakukan recovery, lalu strategi yang terbaik bagaimana. Sedikitnya ada 4 strategi dalam melakukan penanggulangan bencana yang dapat diterapkan:

  1. Backup and Restore
    • Mengirim data keluar lokasi dengan memanfaatkan layanan Amazon S3. Backup Data on-Premise ke AWS dapat dilakukan melalui AWS Storage Gateway. Di AWS Storage Gateway itu terdapat 3 penyimpanan antarmuka, yaitu file gateway (protokol file NFS dan SMB, dapat langsung diakses S3), volume gateway (protokol iSCSI, bisa menggunakan cached volume (lebih hemat biaya) atau stored volume (latensi rendah)), dan tape gateway (protokol iSCSI Virtual Tape Library, bisa diarsipka ke Amazon S3 atau Glacier). Untuk mengimplementasikan AWS Storage Gateway ada 2 pendekatan yaitu menyimpan langsung ke Amazon S3 melalui panggilan API ke layanan AWS dan permintaan HTTP PUT dan GET melalui internet.
      • Solusi Off-Site Backup dengan Gateway-Stored Volume
        • sumber: anonim

          Menggunakan layanan Elastic Beanstalk.
      • Restore Backup ke Data Center On-Premise dengan Gateway-Stored Volume
        • sumber: anonim

        • Menggunakan disk lokal baru.


  2. Pilot Light
    • sumber: anonim
    • Cara kerja dari strategi ini adalah ketika bencana terjadi di lingkungan on-premise maka sistem akan mengalihkan operasinya ke Pilot Light AWS. Langkahnya adalah buat instance EC2 untuk replikasi, kelola Amazon Machine Image (AMI), secara berkala jalankan-atur-perbarui software, dan pertimbangkan penggunaaan sumber daya yang otomatis.


  3. Fully Working Low-Capacity Standby


    • Mirip seperti pilot light namun dengan level lebih lanjut yaitu adanya sumber daya yang standby. Persiapan awalnya sama dengan pilot light, semua komponen diperlukan berjalan 24/7 tetapi untuk bagian production tidak di-scale, uji secara berkala, dan alihkan sebagian kecil traffic production ke situs disaster recovery.
      sumber: anonim

  4. Multi-Site Active-Active
    • sumber: anonim
      Cara kerjanya adalah menjalankan sistem di waktu yang bersamaan di on-premise dan di AWS. Persiapan mirip dengan low-capacity standby, scaling in dan scaling out sepenuhnya untuk mengatasi beban production.
Strategi pilot light merupakan strategi yang relatif murah, namun untuk mendapatkan failover, tetapi untuk mendapatkan performa terbaik saat terjadi disaster maka multi-site active-active adalah yang terbaik. Sebelum menentukan praktik mana yang akan diterapkan untuk menghadapi disaster maka perlu diperhatikan 3 poin, yaitu mulai dari yang paling mudah, periksa masalah lisensi perangkat lunak, dan lakukan latihan disaster recovery. Secara biaya strategi di atas yang paling murah adalah backup and restore, kemudian secara berurut yang paling mahal adalah multi-site active-active.

Tipe dari disaster yang terjadi ada 7, yaitu cyber attacks, software (IT system error), hardware issues, network failure, on-premises data center failure, on-premises power outage, dan natural disaster. Tipe disaster tersebut akan membuat downtime yang memiliki 2 akibat, yaitu cost labor dan cost revenue. Setiap karyawan dalam sebuah perusahaan tentu digaji, walaupun dalam hitungan bulan namun dapat di-breakdown menjadi hitungan menit sehingga bisa dihitung jika terjadi downtime dalam hitungan menit. Begitu pula revenue yang dapat dihitung per tahun kemudian di-breakdown menjadi hitungan hari hingga menit.

Sumber: https://event.cloudcomputing.id/live

Di atas adalah flow service provider Acronis untuk menangani disaster. Layanan disaster tersebut di luar AWS. Acronis merupakan sebuah perusahaan yang memiliki full stack cyber protection untuk mencegah terjadinya downtime.




ref:
https://aws.amazon.com/
cloud-computing-indonesia-conference

Cara Membangun Arsitektur Serverless

Microservices adalah layanan independen yang berkomunikasi melalui API atau application programming interface. Microservices ini merupakan antonim dari monolitik. Karakteristik dari microservices adalah autonomous (pengembangan, deploy, operasi, dan scale tidak mempengaruhi fungsi service lain) dan specialized (dapat dipecah menjadi service yang lebih kecil). Penerapan dari arsitektur tersebut masih membutuhkan VM atau virtual machine, sehingga untuk menunjang fleksibelitas diperlukan container. Dengan container dimungkinkan adanya isolasi aplikasi dan dependensi dari resources. Hal tersebut akan membuat lingkungan lebih konsisten dan operasional yang efisien.

Sedikitnya ada 2 masalah yang dapat ditangani dengan container, yaitu perbedaan lingkungan deployment dan pemanfaatan sumber daya komputasi (tidak perlu menggunakan hypervisor). Layanan untuk mengelola container tersebut adalah Amazon Elastic Container Service yang scalable dan mendukung docker container. Ada 3 hal yang perlu diingat untuk menerapkan Amazon ECS, yaitu container (container dibuat dalam bentuk docker image dan disimpan di dalam penyimpanan yang bisa diakses internet, rekomendasi penyimpanannya adalah Amazon Elastic Container Registry), ECS definition (semacam blueprint untuk aplikasi), dan ECS cluster (pengelompokan task secara logika).

AWS Cloud Map dan AWS App Mesh merupakan dua alat yang dapat membatu dalam penerapan Amazon ECS. AWS Cloud Map digunakan untuk mendaftarkan sumber daya aplikasi, sedangkan AWS App Mesh digunakan untuk menangkap metrik, log, dan jejak microservices yang dapat diekspor ke CloudWatch, AWS X-ray, serta tool AWS Partner. Penggunaan kedua layanan tersebut memang sedikit memakan waktu, namun jika ingin lebih cepat bisa digunakan layanan AWS Fargate. Tentu dengan kemudahan itu perlu ada yang dibayar.

Komputasi serverless merupakan teknologi yang memungkinkan sebuah komunitas pengelola aplikasi menghindari pengurusan server baik on-premise maupun cloud. Layanan untuk teknologi komputasi serverless adalah AWS Lambda yang dapat langsung digunakan hanya dengan memasukkan kode seperti Node.js, Java, C#, Python, Go, Ruby, dan PowerShell. Komponen inti dari AWS Lambda adalah Event Source dan Lambda Function. Fungsi dari event source adalah mem-publish event sedangkan lambda function berfungsi menulis kode untuk memproses event. AWS Lambda mendukung beberapa source seperti S3, DynamoDB, SNS, SQS, CloudWatch events, Target Group (ALB) serta AWS IoT button. Saat ini waktu yang dimiliki AWS Lambda untuk menjalankan program adalah 15 menit.

Sebelumnya telah dibahas bahwa arsitektur microservices akan mengelola API, nah, layanan yang disediakan adalah Amazon API Gateway. Ada 2 jenis API yang akan dibuat yaitu RESTful dan WebSocket API. Contoh alur penggunaan Amazon API Gateway adalah saat pelanggan mengirimkan request kemudian Amazon Gateway akan mengirimkan request tersebut ke Lambda Function yang sesuai. Kemudian request tersebut diteruskan ke Amazon Cognito, AWS STS, dan Amazon DynamoDB. Kemudian core business logic akan mengirimkan request ke Amazon DynamoDB, Amazon S3, Amazon ElastiCache, dan Amazon RDS.

Perlu dicatat bahwa menjalankan lambda function di atas masih belum terstruktur, maksudnya apakah akan dijalankan bersamaan atau ada langkah tertentu. Nah, untuk menjawab kebutuhan tersebut diciptakan AWS Step Functions yang merupakan state machine atau sebuah mesin yang mengeluarkan output bergantung dari kondisi sebelumnya. State machine tersebut menggunakan Amazon State Language yang berbasis JSON. Di dalam ASL yang berbasis JSON itu akan terdapat 2 state, yaitu StartState dan FinalState. Berikut adalah arsitektur serverless yang akan dibangun:

Sumber: anonim

Langkah:

  1. Masuk ke halaman AWS IAM melalui AWS Management Console
  2. Pada panel navigasi pilih menu Roles dan klik tombol Create role
  3. Pilih AWS Service, klik lambda kemudian Next: Permission
  4. Gunakan kotak pencarian dan centang:
    • AmazonDynamoDBFullAccess
    • AmazonS3ReadOnlyAccess
  5. Klik tombol Next: Tags dan tambahkan tag dengan konfigurasi:
    • Key : Name
    • Value : Load-Inventory
  6. Klik tombol Next: Review dan tambahkan role dengan konfigurasi:
    • Role name : Load-Inventory
    • Role description : Allows Lambda function to have read only access to Amazon S3 and have full access to DynamoDB
  7. IAM role pertama sudah berhasil dibuat, sekarang akan dibuat IAM role kedua
  8. Klik tombol Create role
  9. Pilih AWS Service, klik lambda kemudian Next: Permission
  10. Gunakan kotak pencarian dan centang:
    • AWSLambdaDynamoDBExecutionRole
    • AmazonSNSFullAccess
  11. Klik tombol Next: Tags dan tambahkan tag dengan konfigurasi:
    • Key : Name
    • Value : Check-Stock
  12. Klik tombol Next: Review dan tambahkan role dengan konfigurasi:
    • Role name : Check-Stock
    • Role description : Allows Lambda function to execute DynamoDB and have full access to SNS
  13. Sekarang 2 IAM role telah berhasil terbuat!
  14. Pada langkah selanjutkan akan dibuat AWS Lambda Function
  15. Masuk ke halaman AWS Lambda melalui AWS Management Console
  16. Klik tombol Create function
  17. Pilih Author from scratch
  18. Di bagian Basic information gunakan konfigurasi:
    • Function name : Load-Inventory
    • Runtime : Python 3.8
  19. Klik tanda panah Change default execution role, lalu pilih Use an existing role
  20. Lalu pada Existing role pilih Load-Inventory
  21. Klik tombol Create function
  22. Pada tab code klik dua kali lambda_function.py dan copy-paste kode di bawah:
    • # Load-Inventory Lambda function
    • #
    • # This function is triggered by an object being created in an Amazon S3 bucket.
    • # The file is downloaded and each line is inserted into a DynamoDB table.
    •  
    •  
    • import json, urllib, boto3, csv
    •  
    •  
    • # Connect to S3 and DynamoDB
    • s3 = boto3.resource('s3')
    • dynamodb = boto3.resource('dynamodb')
    •  
    •  
    • # Connect to the DynamoDB tables
    • inventoryTable = dynamodb.Table('Inventory');
    •  
    •  
    • # This handler is run every time the Lambda function is triggered
    • def lambda_handler(event, context):
    •  
    •  
    •   # Show the incoming event in the debug log
    •   print("Event received by Lambda function: " + json.dumps(event, indent=2))
    •  
    •  
    •   # Get the bucket and object key from the event
    •   bucket = event['Records'][0]['s3']['bucket']['name']
    •   key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
    •   localFilename = '/tmp/inventory.txt'
    •  
    •  
    •   # Download the file from S3 to the local filesystem
    •   try:
    •     s3.meta.client.download_file(bucket, key, localFilename)
    •   except Exception as e:
    •     print(e)
    •     print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
    •     raise e
    •  
    •  
    •   # Read the Inventory CSV file
    •   with open(localFilename) as csvfile:
    •     reader = csv.DictReader(csvfile, delimiter=',')
    •  
    •  
    •     # Read each row in the file
    •     rowCount = 0
    •     for row in reader:
    •       rowCount += 1
    •  
    •  
    •       # Show the row in the debug log
    •       print(row['store'], row['item'], row['count'])
    •  
    •  
    •       try:
    •         # Insert Store, Item, and Count into the Inventory table
    •         inventoryTable.put_item(
    •           Item={
    •             'Store':  row['store'],
    •             'Item':   row['item'],
    •             'Count':  int(row['count'])})
    •  
    •  
    •       except Exception as e:
    •          print(e)
    •          print("Unable to insert data into DynamoDB table".format(e))
    •  
    •  
    •     # Finished!
    •     return "%d counts inserted" % rowCount
  23. Klik tombol Deploy
  24. AWS Lambda Function telah berhasil dibuat!
  25. Masuk ke halaman S3 melalui AWS Management Console
  26. Klik tombol Create bucket
  27. Berikan nama bucket dengan inventory-xxx (ganti xxx dengan nomor unik) dan pastikan memilih region yang telah ditetapkan sebelumnya kemudian klik tombol Create bucket
  28. Masuk ke bucket yang telah di buat kemudian ke tab properties dan cari Event notifications kemudian klik tombol Create event nofitication
  29. Pada kolom Event name beri nama Load-Inventory
  30. Pada Event types klik All object create events
  31. Pada bagian Destination gunakan konfigurasi:
    • Destination : Lambda function
    • Specify Lambda function : Choose from your Lambda functions
    • Lambda function : Load-Inventory
  32. Klik tombol Save changes
  33. Lambda function telah berhasil dibuat!
  34. Masuk ke halaman Amazon DynamoDB melalui AWS Management Console
  35. Klik tombol Create table, gunakan konfigurasi:
    • Table name : Inventory
    • Primary key
      • Store  {String}
      • Ceklis Add sort key
      • Item   {String}
  36. Klik tombol Create di bagian bawah
  37. AWS Lambda Function, Amazon S3 Bucket, dan Amazon DynamoDB Table telah berhasil dibuat!
  38. Buka notepad kemudian copy-paste teks dibawah:
      • store,item,count
      • Medan,Robusta,12
      • Medan,Arabika,19
      • Medan,Luwak,18
      • Medan,Liberika,0
      • Medan,Gayo,10
      • Medan,Toraja,15
    1. Kemudian simpan dengan format .csv (inventory-medan.csv)
    2. Masuk kembali ke Amazon S3 bucket, klik pada nama bucket yang sebelumnya telah dibuat dan upload file csv tersebut
    3. Masuk kembali ke Amazon DynamoDB kemudian pilih Tables dan klik pada Inventory
    4. Pilih tab Items, jika berhasil data csv tadi akan terbaca di sana
    5. Sekarang akan dibuan Amazon SNS Topic dan Lambda Function kedua
    6. Masuk halaman Amazon SNS melalui AWS Management Console
    7. Pada panel navigasi pilih Topics dan klik tombol Create topic
    8. Pada halaman create topic pilih standard dan beri nama NoStock
    9. Klik tombol Create topic di bagian bawah
    10. Cari tab Subscriptions dan klik tombol Create subscription, gunakan konfigurasi:
      • Protocol : Email
      • Endpoint : (Isi dengan email Anda)
    11. Klik tombol Create subscription di bagian bawah
    12. Cek pesan masuk pada email, dan klik tombol Confirm subscription
    13. Pastikan terbuka tab baru yang menginfokan bahwa email sudah terdaftar di SNS topic
    14. Masuk ke halaman AWS Lambda kemudian klik tombol Create function dan gunakan konfigurasi:
        • Choose one of the following options to create your function : Author from scratch
        • Function name : Check-Stock
        • Runtime : Python 3.8
      1. Pada bagian Permission klik tanda panah pada Create default execution role dan gunakan konfigurasi:
        • Execution role : Use an existing role
        • Existing role : Check-Stock
      2. Klik tombol Create function dibagian bawah
      3. Pada tab code pilih lambda_function.py klik dua kali dan copy-paste kode di bawah ini:
        • # Stock Check Lambda function
        • #
        • # This function is triggered when values are inserted into the Inventory DynamoDB table.
        • # Inventory counts are checked, and if an item is out of stock, a notification is sent to an SNS topic.
        •  
        •  
        • import json, boto3
        •  
        •  
        • # This handler is run every time the Lambda function is triggered
        • def lambda_handler(event, context):
        •  
        •  
        •   # Show the incoming event in the debug log
        •   print("Event received by Lambda function: " + json.dumps(event, indent=2))
        •  
        •  
        •   # For each inventory item added, check if the count is zero
        •   for record in event['Records']:
        •     newImage = record['dynamodb'].get('NewImage', None)
        •     if newImage:
        •  
        •  
        •       count = int(record['dynamodb']['NewImage']['Count']['N'])
        •  
        •  
        •       if count == 0:
        •         store = record['dynamodb']['NewImage']['Store']['S']
        •         item  = record['dynamodb']['NewImage']['Item']['S']
        •  
        •  
        •         # Construct message to be sent
        •         message = store + ' is out of stock of ' + item
        •         print(message)
        •  
        •  
        •         # Connect to SNS
        •         sns = boto3.client('sns')
        •         alertTopic = 'NoStock'
        •         snsTopicArn = [t['TopicArn'] for t in sns.list_topics()['Topics']
        •                         if t['TopicArn'].lower().endswith(':' + alertTopic.lower())][0]
        •  
        •  
        •         # Send message to SNS
        •         sns.publish(
        •           TopicArn=snsTopicArn,
        •           Message=message,
        •           Subject='Inventory Alert!',
        •           MessageStructure='raw'
        •         )
        •  
        •  
        •   # Finished!
        •   return 'Successfully processed {} records.'.format(len(event['Records']))
      4. Klik tombol Deploy
      5. Scroll ke atas klik tombol Add trigger dan gunakan konfigurasi:
        • Select a trigger : DynamoDB
        • DynamoDB table : Inventory
      6. Klih tombol Add yang ada dibawah
      7. Trigger DynamoDB ke Lambda Function telah berhasil dibuat!
      8. Sekarang kita uji coba
      9. Buka notepad dan copy-paste teks di bawah:
        • store,item,count
        • Makassar,Robusta,14
        • Makassar,Arabika,13
        • Makassar,Luwak,24
        • Makassar,Liberika,19
        • Makassar,Gayo,23
        • Makassar,Toraja,0
      10. Simpan dengan format csv (inventory-makssar.csv)
      11. Masuk ke halam S3 kemudian buka bucket yang telah dibuat tadi dan upload file inventory-makassar.csv
      12. Tunggu sejenak, jika berhasil maka akan ada email notifikasi yang masuk
      13. Arsitektur serverless berhasil dibuat!
      Jangan lupa melakukan clean up untuk S3 bucket, Lambda function. DynamoDB table, dan SNS topic yang telah dibuat agar terhindar dari biaya.

      Jika telah memiliki satu cluster ECS dengan tipe EC2 dan telah dibuat service di dalam cluster tersebut maka akan bermasalah saat me-launching cluster baru. Nah, untuk mengatasi hal tersebut agar tidak perlu membuat service baru di cluster baru yang akan di-launching perlu dibuat AMI atau amazon machine image dari server AWS ECS-EC2 tersebut kemudian dimasukkan ke dalam template. Untuk langkah lebih detail bisa dilihat di website Amazon tentang ec2-launch-templates.




      ref:
      https://aws.amazon.com/

      Decoupled Architecture

      Tightly coupled merupakan arsitektur dari beberapa server yang memiliki ketergatungan, maksudnya adalah jika salah satu server mengalami kendala maka server lain ikut mengalami kendala. Sedangkan loosely coupled merupakan arsitektur yang memiliki kelonggaran ketergantungan, sehingga setiap server hampir otonom. Nah, untuk mengubah arsitektur yang pada awalnya berupa tightly coupled maka perlu dilakukan decoupling. Salah satu langkah untuk melakukan decoupling adalah dengan menggunakan perantara load balancer. Perlu dicatat selain dampak domino akibat salah satu server bermasalah pada arsitektur tightly coupled adalah sulitnya untuk melakukan scaling.

      Amazon SQS atau simple queue service merupakan salah satu layanan yang dapat digunakan untuk decoupling sebuah arsitektur. Layanan ini bekerja dalam skala besar dan memiliki kemampuan memproses hingga jutaan pesan per hari. Pesan-pesan tersebut disimpan dalam 1 region, dilindungi oleh SSE atau server-side encryption menggunakan key yang dikelola oleh AWS Key Management Service (KMS). Amazon SQS memiliki 2 jenis queue, yaitu standard queue (pesan tidak terbatas) dan FIFO queue (300 pesan per detik). Sedikitnya ada 4 penerapan dari Amazon SQS, yaitu:

      1. Work queue
        • Memisahkan komponen aplikasi terdistribusi sehingga tidak memproses pekerjaan secara bersamaan
      2. Buffer batch operations
        • Menambahkan volume sementara sehingga tidak kehilangan pesan yang ada
      3. Request offloading
        • Memindahkan proses operasi yang lambat
      4. Auto scaling trigger
        • Memanfaatkan beban volume tertentu sebagai pemicu auto scaling
      Beberapa fitur dalam Amazon SQS sering digunakan misalnya dead letter queue (antrian pesan yang tidak dapat diproses sehingga dapat dianalisis mengapa tidak dapat diproses), visibility timeout (memproses pesan dan menghapusnya untuk mencegah komponen lain memproses), dan long polling (jika pesan kosong maka tidak perlu diproses). Contoh arsitektur dari Amazon SQS adalah:
      Sumber: anonim

      Layanan selanjutnya untuk membantu decoupling adalah Amazon SNS atau simple notification service. Prinsip kerjanya adalah publisher-subscriber. Pertama perlu dibuat SNS topic dan mengonfigurasi publisher (penerbit) dan subscriber (pelanggan) mana yang dapat berkomunikasi dengan topic yang memiliki nama unik. Amazon SNS menggunakan customer master key atau CMK untuk keamanan pesan yang dikirim dan didukung oleh AWS Key Management Service. Ada 5 jenis pelanggan atau subscriber dalam Amazon SNS, yaitu email atau emali-JSON (teks atau objek JSON), HTTP/HTTPS (melalui HTTP POST), SMS (melalui nomor telepon), Amazon SQS Queue (hanya bisa untuk jenis SQS standard, belum mendukung jenis FIFO), dan AWS Lambda Function (kustomisasi, persistensi, hingga berkomunikasi dengan layanan AWS lain). Sedikitnya ada 3 penerapan Amazon SNS, yaitu:

      1. Peringatan sistem dan aplikasi
        • Saat suatu even terjadi seperti auto scaling
      2. Email dan pesan teks
        • Seperti berita yang dapat menarik audiens untuk membuka aplikasi
      3. Push notification pada perangkat seluler
        • Biasanya berupa fitur pembaruan yang baru saja tersedia

      Sebelum menerapkan Amazon SNS maka perlu diketahui karakteristiknya seperti, single published message (hanya bisa mengirim satu pesan), no recall option (pesan yang telah terkirim tidak dapat ditarik), HTTP/HTTPS retry (dapat melakukan percobaan ulang pengiriman), dan order and delivery not guaranteed (semua pesan yang di publish disimpan secara redundant di beberapa server dan data center). Amazon SNS ini dirancang untuk berbagai jenis aplikasi baik yang sederhana hingga yang enterprise. Contoh arsitektur Amazon SNS:

      sumber: anonim

      Unggahan gambar ke S3 bucket memicu event notification mengirim pesan ke SNS topic, kemudian ada 3 pilihan antrian yaitu thumbnail, mobile dan web. Antrian itu kemudian di pull oleh EC2 engine ke ASG atau auto scaling group untuk kemudian di simpan ke S3 bucket.

      Sampai di sini sudah ada 2 peralatan untuk melalukan decoupling, yaitu Amazon SQS dan Amazon SNS. Sedikitnya ada 3 perbedaan dari keduanya, yaitu SQS persisten sedangkan SNS tidak, SNS menggunakan metode push sedangkan SQS menggunakan metode polling, dan SNS bermodel distribusi one-to-many sedangkan SQS bermodel distribusi one-to-one.

      Broker pesan dapat diterapkan dengan menggunakan Amazon MQ. Secara lebih spesifik merupakan layanan khusus untuk Apache yang berupa ActiveMQ dan Rabbit MQ. Amazon MQ dapat melakukan pengiriman pesan termasuk JMS, NMS, AMQP, STOMP, MQTT, dan WebSocket. Sedikitnya ada 2 jenis arsitektur broker, yaitu single instance (terdiri atas satu broker) dan active/standby (terdiri atas dua broker di dua AZ). Sebagai catatan terkadang ada model hybrid dalam penerapan Amazon MQ, yaitu layanan tersebut dapat menghubungkan antara jaringan on-premise dan cloud. Dengan kata lain Amazon MQ dapat digunakan untuk proses migrasi.

      Cara Kerja Komputer

      Perubahan fisika atau perubahan wujud dapat berupa menguap, mencair, meleleh, membeku, menyublim, melebur, dan mendidih. Ada juga perubahan yang terjadi dalam level elektron kemudian membentuk sinar tertentu. Misalnya terbentuknya sinar x karena adanya elektron-elektron bebas yang energinya berinteraksi dengan inti atom atau nukleus membentuk foto sinar x. Berbeda dengan sinar gamma yang dihasilkan dari proses peluruhan zat radioaktif yang terjadi pada inti atom atau nukleus. Sebagai contoh sinar senter yang menyebarkan energi secara acak, jika energi itu dikendalikan secara teratur maka akan terbentuk sinar laser.

      Pada level elektron juga dapat terbentuk listrik akibat adanya loncatan elektron. Listrik sendiri terbagi menjadi dua, yaitu listrik statis dan listrik dinamis. Yang sering digunakan dalam kehidupan manusia adalah listrik dinamis. Listrik tersebut dapat dimanfaatkan dalam teknologi seperti komputerisasi.

      Sumber: https://pixabay.com/id/vectors/sains-fisika-atom-nuklir-proton-4989678/

      Komputer bekerja melalui bahasa mesin 0 dan 1. Nilai tersebut muncul akibat adanya arus dan berhentinya arus, dalam hal ini yang dimaksud arus adalah arus listrik. Bahasa mesin tersebut begitu rumitnya kemudian dirubah secara fisika menjadi bahasa yang lebih dekat dengan manusia. Secara umum untuk dapat mengoperasikan komputer harus terdapat minimal perangkat, CPU atau central processing unit, monitor, keyboard, dan mouse.

      Di dalam CPU atau central processing unit terdapat penyimpanan yang biasanya berupa harddisk. Cara kerja dari harddisk itu melalui media magnetik yang dapat menyimpan miliaran titik. Selain harddisk, di dalam CPU terdapat pula processor yang merupakan sebuah sikuit terintegrasi dengan tujuan melakukan kontrok semua sistem komputer. Kalau harddisk dapat tetap menyimpan data saat komputer shut down, hal ini berbeda dengan RAM atau random access memory yang hanya menyimpan data saat komputer di aliri listrik. Artinya saat komputer mati otomatis data yang ada di RAM akan terhapus.

      Baik RAM, harddisk, dan processor semua tergabung dalam sebuah papan yang disebut motherboard. Motherboard tersebut mendapatkan listrik dari power supply yang langsung bersentuhan dengan listrik rumahan. Di power supply tersebut terjadi pengaturan arus yang diperlukan oleh motherboard. Jadi prinsip dari komputer adalah mengubah tenaga listrik menjadi alat yang dapat melakukan penghitungan secara digital. Kalau secara analog dapat digunakan alat seperti mesin ketik.

      Untuk mendapatkan tampilan yang lebih realistik biasanya digunakan perangkat tambahan berupa VGA atau video graphics adapter. Cara kerjanya adalah mengubah data listrik yang ada komputer menjadi data berupa gambar di monitor. 




      ref:
      https://aws.amazon.com/

      Caching untuk Penanganan Lonjakan User

      Caching adalah kegiatan menyimpan data subset secara berlapis untuk menurunkan latensi. Jadi misalkan hendak mengambil data dari Amerika ke Indonesia, maka data subset tersebut akan tersimpan secara sementara di penyimpanan terdekat dengan Indonesia. Akibatnya saat data tersebut dibutuhkan maka akan lebih cepat dalam mencarinya. Tidak setiap data dilakukan teknik cache. Faktor yang menjadi pertimbangan sebuah data dilakukan caching adalah query yang kompleks, waktu proses yang lama, statis namun sering diakses (ex. profil media sosial), informasi valid untuk jangka waktu yang panjang (ex. laporang keuangan).

      Keuntungan dari caching adalah efisiensi untuk data yang sering diakses. Misalnya akan diakses data info profile perusahaan sebanyak 10x. Dengan caching cukup dengan mengambil data 1x dan dapat diulang tanpa menggunakan data sebanyak 9x. Kelemahannya adalah jika terjadi update dari data tersebut. Sehingga cache ini perlu dihapus secara berkala. Teknologi HTTP atau hypertext transfer protocol berperan penting dalam melakukan caching sebuah website. Teknologi lebih maju diberikan pada HTTPS atau hypertext transfer protocol secure. Caching dilakukan pada client-side (HTTP header directives) dan pada server-side (reverse proxy cache).

      Di lingkungan AWS Caching dilakukan menggunakan layanan Aamzon CloudFront. Cara kerjanya adalah saat user hendak mengakses konten tersebut maka user akan diarahkan ke edge location dengan latensi terendah. Jika konten telah berada di edge location maka CloudFront akan segera mengirimkannya. Jika CloudFront tidak mendapatkan konten tersebut di edge location maka CloudFront akan langsung mengambilnya dari S3 bucket atau HTTP server. Sedikitnya ada 5 konten yang dapat di cache oleh CloudFront, yaitu:

      1. Static, gambar-js-html
      2. Video, RTMP dan HTML streaming
      3. Dynamic, konten kustomisasi yang tidak bisa di cache
      4. User input, HTTP action serta PUT/POST
      5. Secure, keamanan dengan SSL (HTTPS)
      Poin-poin dalam konfigurasi CloudFront adalah:

      1. Menentukan origin server, tempat CloudFront mendapatkan file
      2. Membuat distribution, rute dari pilihan pelanggan pada web atau app
      3. Memberikan nama domain untuk CloudFront distribution
      4. CloudFront akan mengirimkan konfigurasi distribution ke semua edge location (ingat bukan file cache)
      5. Membuat konten memiliki expire, ada beberapa teknik
        • Time to Live (TTL)
          • Periode waktu yang tetap dan langsung dikonfigurasi sesuai kebutuhan.
          • Get request ke origin dari CloudFron menggunakan If-Modified-Since header
        • Mengubah object name
          • Misalnya dari gambar1.jpg menjadi gambar2.jpg
          • Nama baru akan memaksa refresh
        • Invalidate object
          • Menghapus object dari cache sebelum expire
          • Ini sangat tidak direkomendasikan
      Pada web tier atau web bertingkat fungsi dari session management atau urutan transaksi HTTP dikelola menggunakan sticky session atau cache terdistribusi. Nah, untuk memvalidasi setiap sesi dapat digunakan metode client-side cookies atau parameter yang diatur di load balancer.

      Caching database dilakukan dengan pertimbangan waktu respons ke pelanggan, query kompleks berdata besar, dan efisiensi biaya database. Mengatasi lonjakan pengguna database sering ditemukan pada aplikasi gaming. Pengguna yang begitu masif memerlukan respons yang cepat pada milidetik. DynamoDB dapat digunakan untuk menyimpan session yang memerlukan respons cepat pada tingkat milidetik. Pada tingkat mikrodetik alternatif dari DynamoDB adalah DAX atau DynamoDB Accelerator. Sayangnya DynamoDB Accelerator hanya mendukung DynamoDB, sebagai solusi jika menggunakan data selain DynamoDB maka dapat digunakan Amazon ElastiCache. Di ElastiCache ini ada 2 jenis engine yang digunakan untuk in-memory cache, yaitu Memcached dan Redis. Untuk kebutuhan yang sederhana dapat digunakan engine Memcached sedangkan untuk kebutuhan yang lebih kaya fitur maka Redis adalah solusinya.

      Ada 3 jenis strategi yang digunakan untuk melakukan caching, yaitu:

      1. Write Trough
        • Strategi ini melakukan penambahan atau pembaruan data setiap kali data ditulis ke database. Keunggulan dari metode ini adalah data cache tidak akan pernah usang, sedangkan kelemahannya adalah biaya write, data yang mungkin hilang, serta data yang tidak digunakan hingga cache churn atau frekuensi perubahan yang tinggi akan berimbas pada biaya.
      2. Lazy Loading
        • Hanya data yang diminta yang akan disimpan di cache. Kelemahan dari metode ini adalah ketika cache tidak ditemukan maka membutuhkan waktu ekstra yang berpotensi kehilangan pelanggan.
      3. Time to Live (TTL)
        • Lazy loading memungkinkan data menjadi usang sedangkan write trough menyimpan data yang tidak diperlukan. Dengan menggunakan TTL maka keuntungan dari strategi write trough dan lazy loading bisa didapatkan tanpa kekacauan antara cache dan data.

      Sumber: anonim

      CDN atau content distribution network merupakan alat untuk caching, kalau di lingkungan AWS dikenal sebagai layanan Amazon CloudFront. Selain dilakukan di tingkat edge location, caching dapat dilakukan di tingkat web server. Nah, di tingkat web server ini caching dapat dilakukan dengan load balancer melalui session management.

      Di dalam jaringan kita mengenal VPN atau Virtual Private Network. Dalam hal jaringan di cloud maka kita akan mengenal VPC atau Virtual Private Cloud. Tujuan dari adanya VPC adalah membatasi hubungan yang tidak diinginkan, biasanya karena tingkat keamanan. AWS Direct Connect merupakan layanan yang disediakan untuk jaringan cloud.

      Sumber: https://pixabay.com/id/vectors/media-sosial-koneksi-jaringan-3846597/

      Subnet

      Sebuah bagian dari VPC yang mengelompokkan sumber daya berdasarkan keamanan atau kebutuhan operasional. Subnet dapat menjadi private atau public. VPC Subnet dapat berkomunikasi satu sama lain. Subnet digunakan untuk mengontrol akses ke gateway. 

      Network Access Control List

      Komponen dari VPC yang berfungsi untuk memeriksa perijinan dan traffic. Prinsip kerja dari ACL secara default akan mengijinkan data keluar atau masuk, sedangkan secara custom ACL hanya akan mengijinkan data masuk yang ada di daftarnya atau secara eksplisit.

      Security Group

      Lebih detail lagi bahwa setiap EC2 Instance akan dilengkapi dengan security group. Prinsip kerja dari security group hampir mirip dengan Network Access Control List, namun cakupan security group lebih sempit sehingga keamanannya akan lebih tinggi. Secara default security group akan menolak semua traffic masuk dan mengijinkan semua lalu lintas yang keluar dari Instance.

      Network ACL vs Security Group

      Keduanya sama-sama memeriksa paket yang dikirim antar-instance. Network ACL bersifat tidak mengingat apa yang melewatinya sehingga jika paket yang sama melewati network ACL maka paket tersebut akan dicek ijinnya. Hal berbeda dengan Security Group yang tidak akan memeriksa paket yang pernah diperiksa dan mendapat ijin. Dapat dikatakan bahwa Network ACL bersifat stateless, sedangkan Security Group bersifat stateful.

      Domain Name System

      Sebuah sistem yang akan mengubah alamat berupa angka menjadi kata sehingga lebih mudah untuk diingat. Di AWS terdapat layanan dengan nama Amazon Route 53. Jika kita mengirimkan alamat browser maka Amazon Route 53 akan mencari alamat IP dan mengarahkan kita ke sebuah halaman. Selain alamat yang berada di dalam lingkungan AWS, Amazon Route 53 juga dapat mendeteksi alamat yang berada di luar lingkungan AWS.

      Nama domain www.amazon.com memiliki 3 bagian, yaitu subdomain (www), domain (amazon), dan top-level domain (com). Kalau IP address ditangani oleh IANA (internet assigned numbers authority) maka masalah domain name system ditangani oleh ICANN (internet corporation for assigned names and numbers). Saat subdomain, domain, dan top-level domain digabung misalnya menjadi www.amazon.com maka itu yang disebut Fully Qualified Domain Name (FQDN). Indonesia sendiri memiliki pengelola domain, yaitu PANDI atau pengelola nama domain internet indonesia.

      Cara kerja dari DNS adalah saat pengguna membuka web browser kemudian di ketik pada kolom search yaitu www.amazon.com maka pada awalnya perangkat akan memeriksa cache yang ada di browser jika tidak ada maka akan diperiksa di dalam sistem operasi pada bagian DNS cache dan jika tidak ada juga maka akan dicari di hosts file. Ketiga area tersebut yaitu cache browser, DNS cache, dan hosts file merupakan bagian dari perangkat. Jika tidak ada maka akan dicari pada recursive DNS server (biasanya dikelola oleh internet service provider). Nah, jika DNS server juga tidak memuat maka ada 3 kemungkinan akan dicari, yaitu root DNS server (analogi indeks atau katalog di perpustakaan), top-level domain server (analogi rak buku), dan authoritative name server (analogi kamus di rak buku).

      DNS record merupakan bagian dari authoritative name server yang memberikan informasi tentang domain, termasuk IP address yang terkait dengan domain dan menangani permintaan domain tersebut. DNS record sendiri ada 5 tipe, yaitu A record (IPv4), AAAA record (IPv6), CNAME record (alias record), MX record (email), dan NS record (server). Perlu diketahui bahwa nameserver (NS) record tidak bisa merujuk ke alias record. Tools DNS yang cukup familiar adalah dig. Coba lakukan dibawah untuk mendapatkan informasi:

      • Jika dari windows pastikan sudah ada wsl untuk ubuntu
      • Buka terminal
      • Instal tools dig
        • sudo apt-get install dnsutils
      • Contoh cari DNS
        • dig www.tokopedia.com
      • Contoh mengetahui server:
        • dig ns tokopedia.com
      Dengan tools dig dimungkinkan mengetahui apakah sebuah aplikasi menggunakan server atau layanan cloud apa.




      ref:
      https://aws.amazon.com/

      Cara Melakukan Automasi Proses Deploy Infrastruktur

      Secara manual untuk membangun di cloud prosesnya terdiri dari, membuat penyimpanan, routing jaringan, membuat instance, dan membuat database. Penyimpanan dibuat untuk menyimpan file-file terkait aplikasi seperti logo dan script, sedangkan database biasanya dibuat untuk menyimpan data-data terkait lalu lintas jaringan hingga pelanggan. Routing jaringan digunakan untuk membuat jaringan dan menghubungkan antarjaringan. Di dalam jaringan akan ada instance yang berupa snapshot dari konten yang sebenarnya pada waktu tertentu.

      Ada beberapa pertanyaan mitigasi risiko saat membangun lingkungan komputasi yang besar, yaitu:

      • Implementasi otomatis atau manual?
      • Risiko implementasi manual?
      • Cara memperbarui server di lingkungan production?
      • Cara meluncurkan deployment di beberapa region geografis?
      • Cara melakukan roll-back atau restore saat terjadi kegagalan?
      • Cara menerapkan debugging untuk menemukan kesalahan dan memperbaikinya?
      • Cara mengelola dependensi pada berbagai sistem dan subsistem?
      Risiko yang perlu diperhatikan dalam melakukan pembangunan secara manual adalah tidak bisa scale, tidak ada version control, kurangnya jejak audit, dan manajemen data yang tidak konsisten. Oleh karena risiko yang banyak itu dibuat sistem automasi. Tujuan utama dari automasi sebetulnya adalah menghindari human error.

      Kalau untuk mengatur user digunakan layanan AWS Organization sedangkan untuk mengatur sumber daya digunakan layanan AWS CloudFormation. Dengan layanan tersebut dapat disediakan sumber daya dengan cara yang aman dan dapat diulang tanpa tindakan secara manual. Secara default template di Amazon CloudfFormation ada dua tipe, yaitu YAML dan JSON. Ada 3 istilah penting dalam melakukan automasi di CloudFormation, yaitu template (file teks yang menjelaskan dan mendefinisikan resource yang akan di deploy di lingkungan), engine (AWS CloudFormation yang merupakan mesin untuk memperoses template), dan stack (kumpulan resource AWS yang di-deploy bersama sebagai satu grup).

      Karena adanya template yang merupakan bentuk dasar maka dimungkinkan terjadinya penyimpangan. Nah, penyimpangan ini dapat dideteksi dengan fitur drift detection. CloudFormation menganut IaC atau infrastructure as code sehingga akan memudahkan dalam melakukan pengulangan atau penggunaan kembali. Kadang pada bagian stack akan ada perubahan, nah, untuk mencegah terjadinya benturan maka diperlukan fitur ChangeSets yang dapat mengendalikan perubahan. CloudFormation juga dapat digunakan untuk membuat arsitektur berlapis mulai dari Front-end (interface web CRM, interface admin, dashboard analitik), Back-end (pelanggan, promo, produk, pemasaran, analitik), Shared (CRM DB, pemantauan/alarm umum, subnets, security groups), Base network (VPC, internet gateway, VPN, NAT), hingga identity (IAM user, group, roles).

      Praktik terbaik teknologi AWS dapat diterapkan dengan AWS Quick Starts dengan dasar keamanan dan ketersediaan yang tinggi. Dengannya ratusan prosedur manual akan diringkas hanya menjadi beberapa langkah saja. Sampai di sini akan muncul pertanyaan bagaimana cara memperbarui instance. Pada awalnya perusahaan akan menciptakan satu perangkat lunak, kemudian disusul dengan perangkat lunak lainnya sesuai kebutuhan pelanggan. Jika perangkat lunak tersebut sudah semakin banyak maka diperlukan pengaturan agar lebih mudah, oleh karena itu ada layanan AWS Systems Manager. Layanan tersebut bekerja dengan run command, patch management, session manager, maintenance windows, state manager, dan inventory.

      CloudFormation dapat dikombinasikan dengan AWS OpsWorks Stacks yang merupakan layanan konfigurasi dan operasi aplikasi menggunakan puppet atau chef. AWS OpsWorks sendiri memiliki 3 varian, yaitu AWS OpsWorks for Chef Automate (tidak perlu konfigurasi sistem manajemen), AWS OpsWorks for Puppet Enterprise (menyimpan tugas konfigurasi ke setiap node), dan AWS OpsWorks Stacks (manajemen server). Sampai di sini sudah ada 3 kombinasi layanan untuk membuat sebuah automasi, yaitu CloudFormation, Systems Manager, dan OpsWorks. Namun, layanan tersebut masih terlalu kompleks sehingga diciptakan layanan AWS Beanstalk.

      Dengan AWS Beanstalk maka tanggung jawab pengguna hanya pada code, sedangkan layanan tersebut akan mengurus HTTP server, application server, language interpreter, operating system, serta host. Perhatikan gambar automasi di bawah ini:

      Sumber: anonim

      Langkah (tidak detail) membangun arsitektur automasi:

      1. CloudFormation Stack untuk VPC
        • Siapkan file YAML yang telah di buat kodenya sesuai kebutuhan
        • Buka AWS CloudFormation dan Create Stack
        • Konfigurasi sehingga file YAML dapat di upload
        • Masukan nama Stack
        • Pada bagian Parameters biarkan default
        • Buat tag baru, lalu next
        • Periksa kembali stack, jika sudah sesuai klik tombol Create stack
        • Tunggu status CREATE_IN_PROGRESS menjadi CREATE_COMPLETE
      2. Deploy aplikasi dan infrastruktur
        • Siapkan file YAML yang telah dibuat kodenya sesuai kebutuhan
        • Di AWS CloudFormation buat stack dengan With new resources (standard)
        • Konfigurasi sehingga file YAML dapat di upload
        • Manukan nama Stack
        • Pada bagian Parameters biarkan default
        • Isi konfigurasi dari Configure stack oprions
        • Periksa kembali stack, jika sudah sesui klik tombol Create stack
        • Tunggu hingga status berubah menjadi CREATE_COMPLETE
      3. Uji coba aplikasi web yang telah di deploy
        • Di AWS CloudFormation pastikan semua stack telah berstatus CREATE_COMPLETE
        • Buka tab Outputs dan buka halaman dari stack
      4. Menjelajahi template
        • Di AWS CloudFormation buka tab Template
        • Cari bagian InstanceType, bagian untuk memilih tipe instance
        • Cari bagian Web1LaunchConfig, konfigurasi launch untuk auto scaling
        • Cari bagian Resource, merupakan jantung dari template (fokus ke bagian DynamoDB)
          • Logical ID, cara merujuk ke sumber daya DynamoDB table
          • Type, tipe sumber daya mana yang akan dibuat
          • Properties, definisi beberapa nilai yang digunakan untuk DynamoDB table
        • Cari bagian Outputs, informasi setelah proses provisioning
        • Cari bagian Metadata, mengatur template ditampilkan
      5. Menambahkan S3 bucket
        • Gunakan kode berikut:
          • MyS3Bucket:

          •     Type: AWS::S3::Bucket
        • Buka file YAML, kemudian pastekan kode di atas pada bagian RecommendationServiceEnabled sebelum baris tanda pagar (Pastikan MyS3Bucket di awali dengan 2 spasi, sementara Type: AWS::S3::Bucket di awali 4 spasi)
        • Simpan file tersebut
        • Masuk ke AWS CloudFormation ke bagian Stacks, klik CloudFormationLab
        • Klik tombol Update
        • Pada bagian Prepare template, pilih Replace current template dan upload file YAML yang telah di edit
        • Next terus hingga bagian akhir dan klik tombol Update stack
        • Tunggu hingga status pada CloudFormationLab berubah setatus menjadi UPDATE_COMPLETE
        • Buka tab resource, jika telah ada S3 bucket maka pembuatan telah berhasil!
      6. Menghapus stack
        • Masuk ke AWS CloudFormation, pilih Stacks, kemudian CloudFormationLab
        • Klik tombol delete
        • Lakukan hal yang sama pada stack yang satunya

      Langkah di atas tidak detail, hanya bersifat langkah yang masih kasar. Jika telah mengikuti langkah sebelumnya maka langkah yang kasar tersebut akan lebih mudah untuk terbaca maksudnya apa. Saat menggunakan AWS Beanstalk untuk membuat scaling trigger tidak ada pilihan memory utilization. Hal ini terjadi karena secara default di CloudWatch tidak ada, oleh karena itu perlu meng-install agent untuk push metric ke CloudWatch baru kemudian dipakai untuk scaling. Salah satu alur sederhananya adalah pertama install CloudWatch agent di server, kemudian stop server dan create image, lalu gunakan image yang telah ter-install di CloudWatch untuk membuat Launch Template.




      ref:
      https://aws.amazon.com/

      Jokourno

      Jokourno is focus for providing efficient and fair solutions for all

      Dasar Arsitektur Teknologi Informasi

      Dahulu untuk seseorang bertemu dengan keluarganya di tempat yang jauh maka diperlukan perjalanan yang panjang, bahkan melewati lautan dan padang pasir. Selanjutnya ada kemudahan karena munculnya teknologi seperti kendaraan bermotor dan pesawat. Namun itu semua masih membutuhkan waktu yang seringkali menjadi penghambat. Dewasa ini dengan perkembangan teknologi informasi seseorang dapat langsung bertukar informasi secara real-time melalui video conference. Dengan adanya kemajuan tersebut membuat setiap perkumpulan berlomba-lomba membuat sistem teknologi informasi yang memanjakan pelanggannya. Sayangnya terkadang pembuatan sistem teknologi informasi tersebut mengabaikan arsitektur yang dipersyaratkan. sumber: https://pixabay.com/illustrations/video-conference-webinar-5352757/ Untuk membuat sistem informasi yang baik diperlukan pemahaman setidaknya 2 hal yaitu software dan hardware. Keduanya tentu saja memiliki arsitektur tersendiri seperti object oriented programming, functional progr...

      Perancangan Machine Learning

      Pemrograman dibuat untuk menyelesaikan permasalahan. Dalam pemrograman konvensional akan dibuat deretan kode yang memecah masalah tersebut menjadi solusi yang lebih kecil. Sayangnya ketika masalah itu begitu kompleks maka deretan kode yang diperlukan akan sangat banyak. Pada kondisi inilah machine learning dimungkinkan sebagai solusi. Alih-alih membuat deretan kode yang sangat banyak dari suatu permasalahan konteks, machine learning akan membuat penyelesaian lebih sederhana. Tipe machine learning sendiri ada 4, yaitu supervised, unsupervised, semi-supervised, dan reinforcement. Pada tipe reinforcement, mesin menggunakan teknik pengambilan keputusan terbaik, secara berurutan, untuk memaksimalkan ukuran sukses kehidupan nyata. Ada 4 komponen utama pada mesin tipe reinforcement, yaitu action, agent, environment, dan rewards. Semua itu menggambarkan Marcove Decision Process (MDP). sumber: https://magnitt.com/news/world%E2%80%99s-most-valuable-resource-no-longer-oil-data-21035 Sebagaimana d...

      Minuman Cayenne Pepper

      source: https://favpng.com/png_view/chilli-with-chicken-cayenne-pepper-chili-pepper-peppers-food-bell-pepper-png/xiXNdS3r Cayenne pepper (Capsicum annuum) adalah jenis cabai yang berasal dari keluarga solanaceae, yang dikenal dengan rasa pedasnya yang kuat. Cabai ini biasanya digunakan sebagai bahan bumbu dalam masakan untuk memberikan rasa pedas dan sedikit rasa manis. Cayenne pepper memiliki bentuk panjang dan tipis dengan warna merah cerah saat matang, namun pada umumnya dapat ditemukan dalam bentuk bubuk yang lebih praktis digunakan dalam masakan sehari-hari. Cayenne pepper mengandung senyawa aktif yang disebut capsaicin, yang memberikan rasa pedas dan memiliki berbagai manfaat kesehatan. Capsaicin diketahui dapat merangsang metabolisme, meningkatkan pembakaran lemak, serta memiliki sifat antiinflamasi dan analgesik. Oleh karena itu, cayenne pepper sering digunakan dalam pengobatan tradisional untuk membantu mengatasi masalah pencernaan, meredakan nyeri otot, dan meningkatkan p...