Skip to content

Instantly share code, notes, and snippets.

@clasense4
Created March 25, 2018 08:42
Show Gist options
  • Save clasense4/09e272c7348ce1d0b182784b97de7590 to your computer and use it in GitHub Desktop.
Save clasense4/09e272c7348ce1d0b182784b97de7590 to your computer and use it in GitHub Desktop.
Berkenalan dengan DevOps

Apa itu DevOps

DevOps adalah serangkaian praktik yang mengotomatiskan proses antara pengembangan aplikasi dan tim pengembang agar mereka dapat melakukan proses build, test dan release perangkat lunak lebih cepat dan lebih handal. DevOps yang sudah berjalan dengan baik akan menghasilkan produk yang stabil dan meningkatkan nilai dari produk itu sendiri.

Kenapa DevOps sangat penting dalam industri IT

Salah satu best practices dalam DevOps yaitu melakukan update produk yang kecil dan cepat. Dalam industri IT, ini bisa disebut dengan minor / patch update. Dengan melakukan update produk yang kecil, organisasi/perusahaan dapat melakukan inovasi lebih cepat bagi produknya, juga dapat melakukan rollback dengan mudah jika ditemukan bug yang tidak ter-cover oleh automated testing maupun tim QA. Dengan praktek ini, Organisasi/Perusahan dapat me-monitor produk dan mendapatkan data yang paling berharga yaitu data pengguna.

Bagaimana Praktek DevOps?

Continuous Integration

Continuous Integration adalah praktek software development dimana para pengembang dengan regular melakukan perubahan kode dan melakukan merge pada sebuah repository, dan ketika terdapat push commit baru, automated build & test dijalankan, dan hasil akan segera diterima. Jika terjadi kesalahan/bug dalan build/test, tim pengembang dapat dengan cepat melakukan update code sehingga kualitas produk bisa ditingkatkan, dan mengurangi waktu untuk melakukan validasi sebuah update.

Continuous Delivery

Continuous Delivery adalah praktek software development dimana para pengembang yang melakukan perubahan pada code, sudah melakukan build & test yang dijalankan otomatis oleh Continuous Integration dan siap untuk deploy ke environment production namun memilih untuk tidak deploy yang umumnya karena masalah bisnis. Ketika Continuous Delivery dijalankan dengan baik, tim pengembang akan selalu memiliki build artifact yang siap untuk di deploy ke environment production.

Continuous Deployment

Continuous Deployment merupakan salah satu rangkaian setelah Continuous Integration dan Continuous Delivery selesai dijalankan. Umumnya organisasi/perusahaan memiliki environment test / development, dan disinilah fungsi utama continuous deployment, yaitu ketika hasil dari Continuous Integration sudah dinyatakan baik, tim pengembang dapat segera melihat perubahan pada environment test / development / production.

Continuous Deployment merupakan cara yang sangat baik untuk meningkatkan jumlah feedback yang diterima oleh pengguna aplikasi dan mengurangi tekanan karena tidak ada lagi "Hari Rilis". Tim pengembang dapat fokus dalam membangun produk dan dapat melihat perubahan code mereka beberapa menit setelah mereka selesai mengerjakannya.

Aplikasi populer yang mendukung dalam Continuous Integration/Continuous Delivery/Continuous Deployment diantaranya Jenkins, Gitlab CI/CD Bitbucket Pipeline, Semaphore CI, Travis CI, Circle CI, AWS Code Build dan AWS Code Pipeline.

Configuration Management

Configuration Management adalah praktek dalam proses System Engineering yang memiliki tujuan untuk me-maintain konfigurasi sebuah produk, dan memastikan konsitensinya dalam seluruh environment. Dengan menggunakan Configuration Management, proses konfigurasi produk dapat diotomatisasi, distandardisasi dan mengurangi proses konfigurasi yang manual. Tahap selanjutnya, Configuration Management akan mempermudah dalam konfigurasi banyak server dan dapat meminimalisir kesalahan, karena konfigurasi ditulis dalam code, tidak lagi menjalankan perintah manual.

Aplikasi populer yang mendukung dalam Configuration Management diantaranya Ansible, Chef, Puppet, Capistrano, Fabric dan SaltStack.

Infrastructure as a Code

Infrastructure as a Code adalah sebuah praktek dalam System Architecture yang mana infrastruktur sebuah produk didefinisikan dalam code yang dapat diprogram, distandardiasikan dan mudah untuk di duplikasi. Produk skala menengah, mungkin membutuhkan lebih dari satu mesin. Dengan IAAC, tim pengembang dapat dengan mudah menambah mesin melalui satu baris kode.

Produk dalam skala besar, umumnya bergantung pada beberapa produk yang ditawarkan olehprovider cloud, seperti provider aws yang menawarkan produk seperti AWS EC2 dan AWS Kinesis Data Stream. Dengan IAAC, tim pengembang tidak lagi melakukan operasi manual pada console provider cloud, cukup dengan merubah beberapa baris kode, hal yang lebih penting yaitu dapat meminimalisir kesalahan.

Aplikasi populer yang mendukung IAAC diantaranya Terraform, Ansible Tower, Chef, Puppet, SaltStack dan AWS CloudFormation.

Monitoring

Sebuah produk haruslah di-monitoring untuk mengetahui bagaimana produk digunakan oleh pengguna. Dalam praktek DevOps, monitoring merupakan hal yang sangat penting. Tim pengembang harus mengetahui bagaimana perubahan kodenya berdampak pada produk juga penggunanya melalui monitoring tools.

Aplikasi monitoring yang populer diantaranya Nagios, Zabbix, Sensu, Cacti, OpenNMS, Icinga, Prometheus, Grafana dan AWS CloudWatch.

Logging

Log aplikasi adalah salah satu cara untuk mengetahui apakah produk kita berjalan dengan baik atau tidak. Namun seiring dengan tingkat kompleksitas sebuah produk, ada banyak log komponen yang harus diterima dan dianalisis. Dan log tersebut haruslah terpusat, tidak terpisah-pisah. Maka istilah Centralized Logging merupakan hal yang tidak dapat dipisahkan dalam praktek DevOps.

Aplikasi logging yang populer diantaranya ElasticSearch + Logstash + Kibana, Splunk, Graylog, AWS Cloudwatch dan AWS Kinesis Data Firehose.

Communication & Collaboration

Salah satu aspek utama dalam praktek DevOps yaitu meningkatnya komunikasi dan kolaborasi dalam sebuah organisasi/perusahaan, baik dalam bentuk fisik maupun non fisik. Praktek DevOps yang berjalan dengan baik, akan meningkatkan aspek komunikasi dan kolaborasi tidak hanya pada tim pengembang, namun juga tim marketing, sales, operations, dan tim lain yang ada didalam organisasi/perusahaan.

Slack adalah aplikasi yang banyak digunakan sebagai sebuah wadah untuk ber-komunikasi dalam bentuk chat. Dengan banyaknya jumlah integrasi yang bisa dilakukan oleh slack, tidak heran slack menjadi favorit. Aplikasi seperti Skype, Google Hangouts dan Google Meets masih menjadi favorit untuk komunikasi dalam bentuk video/voice call. Tools kolaborasi yang banyak menjadi favorit diantaranya Trello, Jira, Pivotal Tracker dan Meistertask.

Profesi DevOps Engineer

Organisasi/perusahaan yang melakukan praktek DevOps, mereka bisa mengurangi jumlah kesalahan, recovery lebih cepat, dan deploy lebih banyak. DevOps Engineer akan menjadi tim yang posisinya sangat penting, karena DevOps Engineer ini akan bekerja sangat dekat dengan Tim Engineer untuk memastikan produk berjalan dengan baik.

Selain itu, hasil dari survey StackOverflow pada tahun 2017, menunjukan posisi DevOps Specialist menempati ranking pertama dalam rata-rata gaji, yaitu $60,215.

 Gaji DevOps Specialist

Juga masih dari survey StackOverflow pada tahun 2017, posisi DevOps di United States memiliki rata-rata gaji $100,000.

 Gaji DevOps Specialist

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment