Di era yang agile dan cepat saat ini, solusi automation sangat dibutuhkan dimana mana. Dan bahkan walaupun solusi nya dalam bentuk automation, penerapan DevOps sangat berperan untuk solusi yang lebih cepat lagi dan tidak melelahkan.
Berikut ini adalah summary berdasarkan pengalaman yang saya alami :
TAHAP AWAL APLIKASI
- Melakukan analisa terhadap isu atau kebutuhan tentang solusi
Analisa adalah hal awal yang akan kita lakukan, dari analisa ini, harapannya kita bisa mendapatkan global view tentang apa yang akan kita kerjakan.
- Membuat prototyping script di dalam python
Dalam pembuatan prototyping biasanya saya tidak membuat class dan kadang juga tidak membuat function (class biasanya digunakan untuk kebutuhan lebih lanjut) , hal ini disebabkan agar lebih cepat menemukan error dan juga lebih cepat di execute, biasanya setelah solusi sudah lebih baik, code sudah rapih, baru akan saya buat class juga functionnya (note : preferensi tiap orang berbeda beda, mungkin juga akan berbeda jika anda yang mengerjakan).
For some cases, 2 hal diatas sudah cukup membantu banyak untuk melakukan automation, untuk selanjutnya adalah tahap tambahan, yang saya rasakan juga dibutuhkan
TAHAP LANJUTAN APLIKASI
- Membungkus solusi dalam web based application
Ini bukan sesuatu yang wajib, tapi saat waktu berjalan saya merasakan interaksi adalah hal yang cukup penting, karena bisa saja solusi yang kita tawarkan bukan hanya kita yang akan menggunakan, tapi rekan kerja atau bahkan customer kita. Untuk hal ini saya prefer menggunakan flask, karena cepat dan mudah dipelajari, dalam waktu kurang dari 1 menit saja kita sudah bisa mempublish web, dan lanjut untuk meletakkan solusi sebelumnya di dalam web tersebut. Beberapa hal yang perlu di pelajari (bisa kok sambil jalan) yaitu html, css, javascript, sql/object based database/nosql dan jinja language.
Dan hal yang tambahan yang bisa di-consider mengapa kita membutuhkan web buat saya sendiri adalah pada saat kita membutuhkan solusi yang akan terus berjalan all the time, contohnya monitoring service, service yang dibutuhkan dalam 24 jam, dll. Akan lebih mudah bila menggunakan web.
- Melakukan review dan penambahan fitur
Testing adalah hal yang penting, jangan sampai program dibuat tapi kita tidak sadar banyak error yang terjadi dibelakangnya. Seiring berjalannya waktu, kita bisa menambahkan fitur fitur baru untuk UI/UX ataupun mempercepat kinerja aplikasi yang kita buat contohnya menggunakan multithreading/multiprocessing.
TAHAP INFRASTRUKTUR/ENVIRONMENT
Mungkin, bila kita hanya sampai di tahap awal pembuatan script/aplikasi, kita tidak membutuhkan infrastruktur yang cepat/agile, tapi bila kita sudah masuk ke tahap lanjut, berdasarkan pengalaman saya sendiri, infrastrukture yang cepat/agile sangat dibutuhkan.
- Repository/GIT
Repository sangat penting, baik itu aplikasi yang kita kembangkan sendiri, apalagi aplikasi yang dikembangkan bersama, kita bisa melakukan “komunikasi” via repository yang kita buat. Berdasarkan pengalaman saya, saya sarankan untuk menggunakan gitlab, karena sangat lengkap untuk CI/CD nya.
Untuk saat ini, saya bersama teman teman sudah mengaplikasikan penggunaan git ini sampai kebeberapa service yang di sediakan, seperti : pipeline, registry untuk docker, dll, dan gitlab sangat reliable untuk hal hal ini (saya bermula dari github, tapi seiring berjalannya waktu, saya rasa gitlab lebih baik untuk menyediakan solusi yang menyeluruh)
- HTTP Server
Untuk rekan rekan yang menggunakan Django atau framework yang memang recommended untuk langsung menjalankan service web, mungkin tidak perlu menggunakan http server. Untuk flask, hal ini sangat penting, karena memang tidak direkomendasikan menggunakan flask tanpa http server. Untuk hal ini sendiri saya menggunakan konfigurasi wsgi dan untuk HTTP servernya, saya menggunakan gunicorn.
- Dockerize Everything
Yup, kita tidak akan bisa lepas dari docker, mungkin diawal pertanyaannya, kenapa harus memakai docker? Docker sangat menghemat waktu saya untuk melakukan instalasi, karena dependency sudah kita letakkan di Dockerfile. Yang kita butuhkan hanya 1 server linux yang sudah diinstall docker service, lalu melakukan pull terhadap image yang sudah di build, That’s it, life is simple, why make it hard :).
Untuk tahapan lebih lanjut untuk infrastruktur atau environment atau CI/CD nya sendiri mungkin saya belum bisa bahas lebih lanjut, karena masih in-progress juga saya lakukan dan team, in-progress juga belajarnya, hahaha.
Tinggalkan Balasan