Kursus
Setiap sistem yang kompleks merupakan hasil orkestrasi dari berbagai subsistem. Membangun dan memelihara sistem seperti itu tetap menjadi tantangan umum, terutama saat berurusan dengan infrastruktur cloud.
Untungnya, beragam alat telah dikembangkan untuk menyederhanakan orkestrasi alur kerja, apa pun tingkat kompleksitasnya. Di antara alat-alat tersebut, AWS Step Functions menonjol berkat kegunaan dan berbagai manfaatnya.
Artikel ini berfokus pada cara menggunakan Step Functions untuk mengorkestrasi alur kerja di dalam AWS Cloud. Pembahasan dimulai dengan menjelajahi apa itu step functions, beserta manfaat dan fitur utamanya.
Selanjutnya, artikel memandu Anda melalui langkah-langkah memulai Step Function, dari menyiapkan lingkungan AWS hingga menjelajahi antarmuka. Berdasarkan fondasi ini, artikel mengulas proses langkah demi langkah untuk membuat dan menerapkan alur kerja dunia nyata.
Apa itu AWS Step Functions?
AWS Step Functions adalah layanan orkestrasi tanpa server (serverless) yang dirancang untuk memudahkan pembuatan alur kerja visual, sehingga memungkinkan koordinasi yang mulus antara fungsi AWS Lambda dan sumber daya AWS lainnya.
Kemampuan integrasinya sangat luas, mendukung koneksi dengan Amazon EC2, Amazon ECS, server on-premise, Amazon API Gateway, dan antrean Amazon SQS, untuk menyebut beberapa. Ini memastikan alur kerja dapat bersifat menyeluruh dan berinteraksi dengan ekosistem layanan AWS yang luas.
Versatilitas AWS Step Functions membuatnya cocok untuk berbagai aplikasi. Baik untuk mengelola pemenuhan pesanan, memproses data, menjalankan aplikasi web, atau mengorkestrasi rangkaian tugas yang kompleks, Step Functions menyediakan solusi andal untuk otomasi dan pengelolaan alur kerja.
Fitur Utama dan Manfaat
Sebelum menyelami aspek teknis AWS Step Functions, mari telusuri fitur utama dan manfaatnya.
Fitur utama
Step Functions menyediakan beragam fitur untuk menyederhanakan pembuatan dan pengelolaan alur kerja, dan yang utama disorot di bawah ini:
- Integrasi Endpoint HTTPS: Memungkinkan alur kerja memanggil layanan web apa pun yang mendukung HTTPS untuk memfasilitasi integrasi berbagai web API ke dalam proses pengguna.
- Koordinasi Komponen Terdistribusi: Memungkinkan koordinasi komponen dalam sistem terdistribusi, yang krusial untuk aplikasi multi-layanan yang kompleks.
- Manajemen State Bawaan: Dengan memantau secara cermat progres setiap eksekusi alur kerja, kemampuan ini mempertahankan state aplikasi pengguna sepanjang eksekusi sembari mengelola data yang ditransfer antar langkah alur kerja.
- Persetujuan manusia: Kehadiran manusia dalam loop sangat penting bagi otomasi. Fitur ini menawarkan mekanisme untuk menyertakan intervensi manual dalam alur kerja otomatis untuk persetujuan bila diperlukan.
Manfaat
Fitur utama AWS Step Functions memberikan banyak manfaat bagi pengembang dan organisasi untuk meningkatkan alur kerja operasional dan pengembangan mereka.
|
Untuk Pengembang |
Untuk Organisasi |
|
|
Contoh Dunia Nyata dan Studi Kasus
Berdasarkan fitur dan manfaat di atas, tidak diragukan lagi Step Functions dapat memainkan peran krusial di berbagai domain, memungkinkan bisnis merancang, mengotomatisasi, dan menskalakan alur kerja mereka secara efisien.
Bagian ini berfokus pada contoh bagaimana berbagai industri menggunakan AWS Step Functions untuk menjadi lebih kompetitif, inovatif, dan efisien.
Koordinasi Microservice
Organisasi dengan arsitektur yang terdiri dari microservice kerap memanfaatkan AWS Step Functions untuk mengelola interaksi antar layanan tersebut.
Perusahaan ritel, misalnya, mungkin menerapkan Step Functions untuk mengorkestrasi langkah-langkah yang memproses autentikasi pengguna, manajemen stok, pemrosesan pembayaran, dan pengiriman pesanan, memastikan pengalaman belanja yang terpadu.
Keamanan dan Operasi TI
AWS Step Functions dapat digunakan untuk mengotomatiskan tugas berulang seperti pemeriksaan keamanan, pembaruan sistem, dan verifikasi kepatuhan.
Sebagai contoh, dalam keamanan TI, Step Functions dapat digunakan untuk merancang alur kerja respons insiden, sehingga mengurangi kesalahan manusia dan waktu respons dengan mengelola setiap fase secara sistematis dari peringatan awal hingga penyelesaian masalah.
Alur Kerja Data dan Proses ETL
Untuk perusahaan yang padat data, AWS Step Functions dapat mengorkestrasi pemrosesan data dan tugas ETL. Ini dapat melibatkan alur kerja untuk ekstraksi data dari banyak sumber, transformasi ke format yang konsisten, dan pemuatan ke platform analitik atau data lake.
Perusahaan analitik, misalnya, dapat menerapkan Step Functions untuk mengotomatiskan pipeline data mereka, memastikan penanganan data yang efisien guna pengambilan keputusan strategis.
Operasional Machine Learning
Step Functions juga bermanfaat dalam aspek operasional machine learning, termasuk proses seperti penyiapan data, pelatihan model, evaluasi, dan penerapan.
Perusahaan teknologi kesehatan dapat menggunakan Step Functions untuk mengelola pipeline pelatihan ulang berkala algoritme diagnostiknya, menjaga kinerja model seiring tersedianya data baru.
Pipeline Pemrosesan Media
Dalam media dan hiburan, AWS Step Functions dapat digunakan untuk mengorkestrasi alur kerja pemrosesan media yang kompleks, termasuk pengodean video, pemrosesan gambar, dan analisis konten.
Sebuah perusahaan media dapat menerapkan Step Functions untuk memastikan konten baru, setelah diunggah, secara otomatis memicu konversi format, ekstraksi thumbnail, dan pengayaan metadata sebelum dipublikasikan.
Memulai dengan AWS Step Functions
Bagian berikutnya dalam artikel ini membahas penggabungan Step Functions dengan layanan AWS lainnya. Karena itu, perlu memahami dasar-dasar Step Functions sebelum membahas konsep lanjutan.
Tujuan bagian ini adalah membantu Anda memulai dengan AWS Step Functions, dari memahami blok pembangun hingga menavigasi antarmuka AWS Step Functions.
Blok Pembangun Step Functions
Setiap sistem atau modul merupakan kombinasi dari beberapa subkomponen, demikian pula Step Functions. Step Functions didasarkan pada blok berikut: (1) state machine, dan (2) task.
Mari pahami konsep-konsep ini melalui sebuah contoh.
- State Machine: Alur kerja yang mendefinisikan urutan kejadian, logika kondisional, dan aliran eksekusi tugas secara keseluruhan. Singkatnya, state machine dapat didefinisikan sebagai alur kerja.
- Task: Aksi yang menjalankan suatu tindakan spesifik. Task menerima input dan menghasilkan output. Contohnya bisa berupa melakukan query ke database, melakukan panggilan API, atau memanggil fungsi Lambda, dan lain sebagainya.
Pertimbangkan use case yang melakukan proses pendaftaran penitipan anak menggunakan AWS Step Functions. Sebelum membahas proses memanfaatkan Step Functions, mari pahami langkah-langkah keseluruhannya:
- Mengumpulkan Informasi Pendaftaran: langkah pertama dalam proses adalah mengumpulkan informasi pendaftaran dari orang tua. Ini dapat dilakukan melalui formulir web, namun dalam use case ini kita menggunakan JSON. Saat dikirimkan, sebuah fungsi Lambda dipicu, lalu fungsi Lambda meneruskan informasi pendaftaran ke langkah berikutnya dalam alur kerja.
- Memverifikasi Informasi Pendaftaran: Langkah berikutnya adalah menggunakan fungsi Lambda yang memverifikasi informasi pendaftaran. Fungsi ini memeriksa bahwa semua kolom wajib telah diisi dan usia anak berada dalam rentang yang dapat diterima untuk penitipan. Jika verifikasi berhasil, alur kerja berlanjut ke langkah berikutnya. Jika tidak, pesan kesalahan dikembalikan kepada orang tua.
- Memeriksa Ketersediaan: setelah informasi pendaftaran diverifikasi, fungsi Lambda lain memeriksa ketersediaan tempat di penitipan. Jika tersedia, alur kerja berlanjut ke langkah berikutnya. Jika tidak, pesan dikirim kepada orang tua yang memberi tahu bahwa penitipan penuh.
- Konfirmasi Pendaftaran: langkah terakhir adalah fungsi Lambda yang mengonfirmasi pendaftaran dan mengirimkan pesan konfirmasi kepada orang tua. Ini mencakup detail tentang tanggal mulai dan biaya.
Alur kerja ini memiliki State Machine dengan empat task utama, semuanya cukup jelas.
checkInformationcheckAgeRangecheckSpotsAvailabilityconfirmRegistration
Alur kerja Pendaftaran Penitipan Anak menggunakan AWS Step functions
Membangun AWS Step Function Pertama Anda
Bagian di atas memberikan lebih banyak pengetahuan teoretis, dan bagian ini menyelami aspek teknis, mulai dari prasyarat penggunaan Step Functions, hingga mengimplementasikan alur kerja end-to-end dan menerapkannya.
Prasyarat untuk Mengimplementasikan Step Functions
Sebelum membahas detail use case, mari ulas terlebih dahulu prasyarat yang diperlukan untuk implementasi yang sukses:
- Akun AWS: dibutuhkan untuk mengakses layanan AWS, dan dapat dibuat dari situs web AWS.
- Pengetahuan dasar Layanan AWS: Keakraban dengan AWS Lambda dan Amazon Simple Notification Service (SNS) diperlukan untuk cakupan use case ini.
- Pengetahuan JSON: Pemahaman dasar JSON diperlukan untuk memahami format data input dan output.
- AWS IAM: Pemahaman tentang AWS Identity and Access Management (IAM) diperlukan untuk menyiapkan izin yang benar bagi fungsi Lambda yang digunakan.
- Keterampilan Pemrograman: Keterampilan pemrograman dasar Python diperlukan untuk menulis fungsi Lambda.
Menavigasi Antarmuka AWS Step Functions
Mari mulai dengan menjelajahi antarmuka Step Function. Ini dilakukan dengan mempertimbangkan empat langkah utama berikut setelah masuk ke akun AWS Anda:
- Ketik kata kunci “Step Functions” di bilah pencarian di bagian atas.
- Pilih ikon yang sesuai dari hasil.
- Klik ikon “Get Started” untuk mulai membuat step function pertama.
- Terakhir, karena kita ingin membuat state machine sendiri, pilih tab “Create your own”.

Empat langkah utama untuk mengakses antarmuka Step Function
Setelah langkah keempat, kita dapat mulai merancang state machine dengan bantuan tab “Design”, yang berisi tiga fungsi utama: “Actions”, “Flow”, dan “Patterns.”

Tiga komponen utama dari tab "Design"
- Actions: Merujuk pada operasi individual yang dapat dilakukan dalam sebuah alur kerja, dan terkait dengan layanan AWS tertentu, seperti memanggil fungsi Lambda, memublikasikan pesan ke SNS, menjalankan task di ECS, atau memulai job di AWS Glue.
- Flow: Mewakili konstruksi alur kontrol yang menentukan jalur eksekusi state machine. Elemen seperti "Choice" untuk percabangan logika, "Parallel" untuk jalur eksekusi paralel, "Map" untuk iterasi pada koleksi, "Pass" sebagai no-operation atau pengaya data state, "Wait" untuk jeda waktu, "success" untuk mengakhiri alur kerja dengan sukses, dan "Fail" untuk mengakhirinya karena error merupakan bagian dari kontrol alur dalam workflow.
- Patterns: Templat atau praktik terbaik yang sudah ditentukan untuk skenario alur kerja umum, memudahkan pembuatan state machine yang kompleks. Pola dapat mencakup tugas pemrosesan data khusus penanganan objek S3, file JSON, file CSV, atau pola serbaguna seperti job Poller untuk mengorkestrasi eksekusi job asinkron.
Membuat Alur Kerja
Alur kerja awal bertujuan memberikan gambaran umum tentang komponen utama state machine. Bagian ini meninjau proses implementasinya.
Untuk itu, kita memerlukan empat fungsi lambda, masing-masing sesuai dengan sebuah task spesifik.
Tujuh langkah berikut menyoroti semua langkah yang diperlukan untuk membuat fungsi lambda. Proses pembuatannya sama untuk keempatnya; perbedaannya hanya pada isi fungsi-fungsi tersebut.
Kode lengkap artikel tersedia di halaman GitHub. Meski kodenya mudah dipahami, sangat disarankan Anda mengikuti seluruh isi artikel ini untuk pengalaman yang lebih baik.
7 langkah utama untuk membuat Lambda Function
Setelah tujuh langkah selesai, jendela berikut akan muncul, menampilkan informasi penting seperti:
- Nama fungsi
- Tautan Amazon Resource Name (ARN), dan
- Area terintegrasi untuk mengimplementasikan logika fungsi.
Detail fungsi lambda checkInformation
Sekarang, ulangi proses yang sama untuk tiga task (fungsi) lainnya, yaitu checkAgeRange, checkSpotsAvailability, dan confirmRegistration.
Contoh input JSON diberikan di bawah. Penting untuk memahaminya karena memengaruhi cara implementasi fungsi.
- JSON berisi informasi tentang anak yang didaftarkan, termasuk nama depan, nama belakang, dan tanggal lahir.
- JSON juga mencakup detail tentang orang tua, hari-hari dalam seminggu saat anak akan hadir di penitipan, dan informasi tambahan apa pun.
{
"registration_info": {
"child": {
"firstName": "Mohamed",
"lastName": "Diallo",
"dateOfBirth": "2016-07-01"
},
"parents": {
"mother": {
"firstName": "Aicha",
"lastName": "Cisse",
"email": "aicha.cisse@example.com",
"phone": "123-456-7890"
},
"father": {
"firstName": "Ibrahim",
"lastName": "Diallo",
"email": "ibrahim.diallo@example.com",
"phone": "098-765-4321"
}
},
"daysOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"specialInstructions": "Mohamed has a peanut allergy."
}
}
Setiap fungsi lambda dijelaskan di bawah ini:
|
Fungsi |
Deskripsi |
|
|
|
|
|
|
|
|
|
|
|
|
Implementasi dasar setiap fungsi disediakan di bawah ini:
checkInformation function
import json
def checkInformation(event, context):
registration_info = event['registration_info']
required_fields = ['child', 'parents', 'daysOfWeek']
for field in required_fields:
if field not in registration_info:
return {
'statusCode': 400,
'body': f'Missing required field: {field}'
}
return {
'statusCode': 200,
'body': json.dumps(registration_info)
}
checkAgeRange function
import json
import datetime
def checkAgeRange(event, context):
registration_info = json.loads(event['body'])
dob = registration_info['child']['dateOfBirth']
today = datetime.date.today()
dob_date = datetime.datetime.strptime(dob, '%Y-%m-%d').date()
age = today.year - dob_date.year - ((today.month, today.day) < (dob_date.month, dob_date.day))
if age < 2 or age > 5:
return {
'statusCode': 400,
'body': json.dumps('Child is not within the acceptable age range for this daycare.')
}
registration_info['child']['age'] = age
return {
'statusCode': 200,
'body': json.dumps(registration_info)
}
checkSpotsAvailability function
import json
def checkSpotsAvailability(event, context):
registration_info = json.loads(event['body'])
spots_available = 20 # This should be dynamically determined, not hardcoded
if spots_available <= 0:
return {
'statusCode': 400,
'body': json.dumps('No spots available in the daycare.')
}
return {
'statusCode': 200,
'body': json.dumps(registration_info)
}
confirmRegistration function
import json
import datetime
def confirmRegistration(event, context):
registration_info = json.loads(event['body'])
age = registration_info['child']['age'] # This was added in the checkAgeRange function
if age >= 2 and age < 3:
fees = 800
elif age >= 3 and age < 4:
fees = 750
elif age >= 4 and age < 5:
fees = 700
else: # age >= 5
fees = 650
start_date = datetime.date.today() + datetime.timedelta(weeks=2)
confirmation_details = {
'fees': fees,
'start_date': start_date.isoformat()
}
response = {**registration_info, **confirmation_details}
return {
'statusCode': 200,
'body': json.dumps(response)
}
Dengan semua ini siap, kita dapat mulai membuat state machine penitipan anak menggunakan antarmuka grafis Step Functions.
State machine final diberikan di bawah, dan mari pahami langkah-langkah utama yang menghasilkan alur kerja ini:

Alur kerja state machine untuk use case penitipan anak
Sebelum lanjut, penting untuk dicatat bahwa field statusCode dari output fungsi lambda digunakan untuk menentukan state berikutnya dalam state machine.
- Jika nilainya 200, berarti pemeriksaan berhasil, dan kita melanjutkan ke langkah berikutnya.
- Jika
statusCodebernilai 400, maka pemeriksaan gagal, dalam hal ini kita mengembalikan pesan yang relevan bergantung pada fungsi yang mengeksekusi task terkait.
Check Information
- State machine dimulai pada langkah ini.
- Sebuah fungsi lambda dipanggil untuk memeriksa apakah semua informasi yang diperlukan tersedia dalam formulir pendaftaran.
- Jika informasinya lengkap, proses berlanjut ke langkah berikutnya. Jika tidak, berakhir dengan fail state yang memberi tahu bahwa informasi tidak lengkap.
Check Age Range
- Langkah ini hanya dicapai jika pemeriksaan informasi berhasil.
- Fungsi lambda lain dipanggil untuk memeriksa apakah usia anak berada dalam rentang yang dapat diterima untuk penitipan.
- Jika usia berada dalam rentang, proses berlanjut ke langkah berikutnya. Jika tidak, berakhir dengan fail state yang memberi tahu bahwa usia tidak valid.
Check Spots Availability
- Langkah ini hanya dicapai jika pemeriksaan usia berhasil.
- Sebuah fungsi lambda dipanggil untuk memeriksa apakah ada tempat yang tersedia di penitipan.
- Jika tempat tersedia, proses berlanjut ke langkah berikutnya. Jika tidak, berakhir dengan fail state yang memberi tahu bahwa tidak ada tempat tersedia.
Confirm Registration
- Ini adalah langkah terakhir dan hanya dicapai jika ada tempat yang tersedia di penitipan.
- Sebuah fungsi Lambda dipanggil untuk mengonfirmasi pendaftaran dan menghitung biaya berdasarkan usia anak.
- Proses berakhir setelah langkah ini dengan success state, mengonfirmasi pendaftaran.
Untuk mempelajari lebih lanjut tentang fungsi Lambda, Streaming Data dengan AWS Kinesis dan Lambda mengajarkan cara bekerja dengan data streaming menggunakan teknologi serverless di AWS.
Membuat Peran IAM
Langkah selanjutnya adalah mendefinisikan peran IAM agar step functions dapat memanggil fungsi lambda kita. Ini dilakukan dengan mengikuti langkah-langkah berikut:

9 langkah pertama untuk membuat peran IAM

Langkah ke-10 dan ke-11 untuk membuat peran IAM
Peran IAM ini dapat diberikan pada state machine sebagai berikut, dimulai dari tab “Config”.

3 langkah utama untuk memberikan peran IAM
Setelah menyimpan, kita akan mendapatkan pesan berikut untuk memastikan semuanya berjalan lancar.

Pesan sukses untuk pembuatan state machine
Setelah puas dengan state machine, langkah selanjutnya adalah membuatnya menggunakan tombol “Create” yang terletak di kanan atas.
Ilustrasi eksekusi state machine
Menerapkan dan Menguji Alur Kerja Anda
Alur kerja kita telah diterapkan, dan sekarang saatnya menguji state machine. Kita akan menguji dua skenario:
- Kasus gagal dengan rentang usia valid, di mana anak yang didaftarkan berusia lebih dari 5 tahun. Ini sesuai dengan JSON awal.
- Kasus sukses di mana anak berusia 3 tahun.

Hasil untuk kasus sukses

Hasil untuk kasus gagal
Mengoptimalkan Step Functions Anda
Optimasi proses apa pun dimulai dengan mengadopsi praktik terbaik terkait proses tersebut, yang dapat meningkatkan performa dan efektivitas biaya. Praktik terbaik berikut dapat membantu memaksimalkan manfaat dari AWS Step Function apa pun.
- Praktik Terbaik Kinerja: Meliputi strategi seperti meminimalkan jumlah transisi state, menggunakan pengaturan timeout yang tepat, dan mengoptimalkan fungsi AWS Lambda Anda.
- Praktik Terbaik Efektivitas Biaya: Meliputi strategi seperti menggunakan jenis state machine yang tepat (Standard atau Express), mengelola biaya AWS Lambda, serta memahami dan mengelola harga Step Functions.
Kesimpulan
Artikel ini telah memberikan panduan komprehensif untuk memahami dan memanfaatkan AWS Step Functions. Artikel dimulai dengan memperkenalkan AWS Step Functions beserta fitur dan manfaat utamanya.
Artikel kemudian memandu pembaca melalui proses menyiapkan lingkungan AWS dan menavigasi antarmuka AWS Step Functions.
Selanjutnya, artikel mengulas proses membangun AWS Step Function pertama, dari membuat alur kerja dasar hingga menerapkan dan mengujinya. Artikel juga mengeksplorasi fitur lanjutan dan use case AWS Step Functions, sebelum membahas cara mengoptimalkannya untuk efisiensi dan efektivitas biaya maksimum.
Penutup
Artikel kami Perbandingan Layanan AWS, Azure, dan GCP untuk Data Science & AI dan Pengenalan AWS Boto di Python bisa menjadi langkah lanjutan yang sangat baik untuk belajar lebih jauh.
Yang pertama memberikan perbandingan layanan utama yang diperlukan untuk pekerjaan terkait data dan AI, mulai dari rekayasa data hingga analisis data dan data science, hingga membuat aplikasi data. Cheat sheet ini dapat membantu memahami lanskap layanan cloud untuk data science dan AI di tiga platform besar.
Artikel kedua memberikan pengantar mudah tentang AWS Boto di Python, mengajarkan cara memanfaatkan teknologi cloud untuk mengoptimalkan alur kerja data. Ini bisa menjadi sumber yang bagus bagi siapa pun yang ingin mengotomatiskan operasi AWS menggunakan Python.
Ada banyak layanan di AWS, dan kunci untuk menguasai AWS Step Functions adalah memahami kebutuhan aplikasi dan menggunakan kombinasi layanan serta fitur AWS yang tepat untuk memenuhi kebutuhan tersebut.
Seorang data scientist serbabisa yang senang berbagi pengetahuan dan memberi dampak bagi orang lain, Zoumana adalah pembuat konten di YouTube dan penulis teknologi teratas di Medium. Ia menikmati berbicara di depan umum, ngoding, dan mengajar. Zoumana meraih dua gelar magister: yang pertama di bidang ilmu komputer dengan fokus Machine Learning di Paris, Prancis, dan yang kedua di bidang Data Science dari Texas Tech University di AS. Kariernya dimulai sebagai Pengembang Perangkat Lunak di Groupe OPEN, Prancis, lalu bergabung dengan IBM sebagai Konsultan Machine Learning, di mana ia mengembangkan solusi AI end-to-end untuk perusahaan asuransi. Zoumana kemudian bergabung dengan Axionable, startup AI Berkelanjutan pertama yang berbasis di Paris dan Montreal. Di sana, ia berperan sebagai Data Scientist dan mengimplementasikan produk AI, terutama use case NLP, untuk klien dari Prancis, Montreal, Singapura, dan Swiss. Selain itu, 5% dari waktunya didedikasikan untuk Riset dan Pengembangan. Saat ini, ia bekerja sebagai Senior Data Scientist di IFC - World Bank Group.





