lifelong learner — urip iku urup, currently working on accenture.

3 Tools Devops Utama yang di Rekomendasikan pada 2020

0
Degananda.com -

devops_logo_thumb

Devops menjadi sebuah buzzword yang sangat populer dari pertengahan 2019 hingga 2020 saat ini. Tingkat kepopularitasan devops sangat meroket seakan menjadi revolusi dalam dunia software engineering.

trend_devops.JPG
trend perbincangan topik devops pada google trends.

Berdasarkan trend yang terdapat pada google trends, topik devops mulai menjadi perbicangan ahir 2018 dan pada ahirnya meroket tajam di pertengahan 2019 hingga awal 2020.

devops adalah sinergi antara proses otomasi dan software development dalam lingkup SDLC. Utamannya adalah melakukan otomasi disetiap lini proses dalam SDLC mulai dari coding, testing hingga rilis.

oleh karena itu, sebagai praktisi di dunia it baik itu seorang software developer, project manager,tester, fungsional ataupun architect, mempelajari devops adalah hal yang direkomendasikan untuk selalu keep up dengan trend dalam software engineering.

Aplikasi dan Tools Devops yang harus dikuasai pada 2020

berikut ini adalah beberapa tools yang terkait dengan devops yang dapat dijadikan opsi untuk dipelajari dan dikuasai baik secara rekomendasi tools ataupun konsep.

Meski begitu, tools dibawah ini hanyalah suatu referensi, tentunnya apabila project menggunakan cloud provider seperti azure ataupun aws, devops telah menjadi bagian dalam cloud service tersebut yang umumnya toolsnya akan mengikuti platform yang digunakan.

Devops Tools 1  – Development dan Build

ini adalah kerangka utama yang umumnya digunakan software developer dan tester dalam proses CI/CD (Continous integration dan continous development). Dapat dikatakan bahwa development dan build adalah core utama dari devops, karena disinilah kode itu dibuat.

jika di ibaratkan pada proses memasak, maka tools development dan build ini adalah kompor, wajar dan berbagai alat masak utama lain.

tiga buah tools termasuk pada kategori development dan build ini, yakni :

  1. SCM (source control management), tentunnya hal yang palling populer di item ini adalah git.
  2. CI (Continous integration) / CD (Continous delivery), hal ini terkait dengan deployment pipeline yang dapat langsung terintegrasi pada SCM. Sehingga, pada saat ada merge terjadi pada branch tertentu (biasannya pada develop), pipeline deployment ini akan berjalan.
  3. Data management.

Referensi tools untuk CI/CD pipeline pada 2020

gitlab_thumb.JPG

salah satu tools yang populer dalam kategori ini adalah gitlab.  Pada gitlab telah terdapat sistem SCM yang berbasiskan pada git. Gitlab dapat digunakan secara free (gratis) namun dengan beberapa limitasi. Apabila project telah mature dan masuk pada sisi komersi dapat menggunakan gitlab yang berbayar.

https://about.gitlab.com/

Beberapa alasan yang menjadikan gitlab menjadi salah satu tools CI/CD yang patut dipertimbangkan :

  1. stabil dan mature – gitlab telah hadir sejak tahun 2013. Sehingga sudah hampir 7 tahun gitlab mengudara di interent. Secara otomatis tingkat ke stabilan platform gitlab tidak perlu dipertanyakan.
  2. Opensource – secara umum, fungsionalitas utama (core) dari gitlab akan tetap hadir pada versi free dan premium. Sehingga tidak terlalu dikapitalisme.
  3. Proses CI/CD yang mature dan mengikuti standar industri.

Gitlab CI/CD proses

gitlab_cicd.JPG
Proses CI/CD pada gitlab yang sesuai dengan standar industri

pipeline CI/CD diawali dari kode yang dituliskan oleh developer. Kode tersebut akan di atur oleh sistem SCM (source code management). Biasannya terdapat dua buah branch utama yakni master dan develop (tergantung dari karakteristik project).

lima proses utama pada CI/CD. Code -> Commit-> PR -> CI -> CD.  Gitlab menggunakan alur proses tersebut yang telah mengikuti standar industri.

Pada saat suatu branch memiliki kode baru yang dimerge, maka secara otomatik pipeline CI (Continous integration) akan berjalan. Pada proses CI akan dilakukan build code, unit test dan integration test.

  • Build code tentunnya akan tergantung dari bahasa pemrograman yang digunakan. Sebagai contoh pada nodejs (typescript), maka kode akan dibuild menjadi javascript dengan
    npm run build
  • unit test. kode yang ditulis haruslah dilakukan unit test, ini untuk memastikan tidak ada bug pada kode tersebut. Tapi tentunnya tidak semua baris kode harus dilakukan unit test, hanya pada fungsi-fungsi utama yang memiliki technical requirement atau business requirement.
  • integrationn test, berbeda dengan unit test yang dilakukan pada level kode, integration test dilakukan pada level service/api. Contoh integration test adalah pada integrati antara frontend dan backend. Tools yang umum digunakan untuk integration test adalah jmeter ataupun selenium

setelah proses CI selesai, maka akan dilanjutkan dengan proses CD (Continous delivery). Pada proses ini artifak kode akan di deploy ke environment tertentu. Jika pada fase development maka tidak akan dideploy pada environment production.

review (peer review) -> staging (environment devlopment) -> production

Devops tools 2 – Data Management

secara harfiah data management artinya adalah pengololaan data. Pada proses devops, terlebih saat proses CI dan CD, tentunnya akan memiliki depedency pada data yang tersedia di database.

Sebagai contoh, untuk dapat melakukan integration testing di proses CI pipeline, biasannya akan membutuhkan dataa didatabase agar dapat mengeksekusi test plan nya.

dalam hal ini tentunnya tidak ada tools yang cocok karena akan sangat bergantung pada arsitektur(jenis storage & bahasa pemrograman) project yang digunakan. Tools yang digunakan harus menyesuaikan dengan tipe storage(RBDMS/No SQL/ etc). pada arstitektur.

dua hal utama yang didapatkan saat menggunakan data management pada proses CI/CD :

  1. database versioning – saat proses development, tentunnya tidak dapat dipungkiri bahwa data model akan berubah-ubah. Data management tools akan dapat melakukan versioning. Sehingga sangat mudah untuk mengganti versi data model pada database. Sangat berguna pada saat integration test.
  2. Integrasi versioning pada kode – pada saat aplikasi / api dijalankan, dengan menggunakan data management tools yang secara langsung dapat digunakan dilevel kode, maka dapat melakukan cek depedency versi data model pada database. Hal ini tentu dapat memudahkan proses versioning di database dan aplikasi sehingga selalu in sync (selaras).

Data management – CI/CD versioning untuk RDBMS (SQL)

flyway_db.JPG

apabila database yang digunakan adalah RDBMS yang menggunakan SQL, maka dapat menggunakan tools “flywaydb” untuk melakukan versioning dalam data management.

https://flywaydb.org/

Data management – CI/CD versioning untuk MongoDB (NoSQL)

apabila database yang digunakkan adalah NoSQL ( terkhusus untuk mongodb), maka dapat menggunakan monjam.

https://github.com/oun/monjam

kedua hal diatas hanyalah contoh, karena kesesuaian tools harus dikembalikan ke karakteristik dari project tersebut.

Devops tools 3 – Automated testing tools

otomasi adalah hal mendasari dalam seluruh proses devops. Mulai dari kode -> ci -> cd. Pada saat proses CI (Continous integration), dilangkah ahir setelah build, terdapat proses yang bernama unit testing dan integration test.

testing_pyramid.jpg
4 layer testing pyramid untuk meningkatkan kualitas kode.

Dalam melakukan automated testing perlu dipertimbangkan empat hal seperti yang tertuang pada 4 layer testing pyramid diatas dan keseluruh layer diatas harus dilakukan otomasi serta intergrasi dalam CI pipeline.

  • Unit Test – Unit test berada pada layer terendah dalam testing pyramid. Perlu diperhatikan bahwa, unit test layer ini sangat lebar. Sehingga, unit test adalah aktivitas testing paling fundamental karena memiliki impact yang paling besar untuk memastikan kualitas kode.

    unit testing dibuat oleh programmer/developer yang mengevaluasi baris kode. Kode yang ditulis harus sesuai dengan business dan technical requirement. Unit testng berfungsi memastikan dua hal tersebut.

  • Component test – Berada di layer kedua setelah unit test. Memiliki impact yang cukup besar. Tujuan utama dari component test adalah memastikan komponen tersebut berfungsi dengan baik. Implementasi component test ini adalah dengan melakukan API test (invoke API dengan jmeter) ataupun otomasi fungsionalitas UI (tanpa integrasi ke API) dengan selenium.
  • Integration Test – sesuai dengan namannya, integration test akan melakukan testing secara menyeluruh antar komponen. Sebagai contoh dalam arsitektur monolithics pada integration test akan meliputi test diantar beberapa modul yang terkait.

    Contohnya pada sisi backend terdapat modul Order dan vehicle, maka pada level jmeter harus membuat order (POST createOrder) berdasarkan data vehicle yang ada (GET vehicleList)

  • End to End test – E2E antara frontend dan backend. idealnya E2E test dijalankan pada level frontend, karena frontend akan memanggil fungsi backend.

    Namun perlu di ingat bahwa, E2E test ini berada dilayer tertinggi, memiliki cost yang cukup besar namun dengan impact yang kecil. karena layer ini berada dipuncak secara otomatis memiliki lebar yang tidak besar.

    E2E harus diprioritiaskan di bagian ahir karena impact yang tidak terlalu besar.

kesimpulannya tools yang dapat digunakan dalam automated testing adalah

  • frontend test
    seleium_thumb.JPG

    selenium – dapat mengotomasi browser sesuai dengan testplan. Mampu membuka website dan melakukan fungsi klik, type, wait DOM dan lain sebagainnya. Sangat cocok untuk melakukan testing frontend

    https://www.selenium.dev/
  • Backend test (API)
    jmeter_thumb.JPG

    Jmeter – sangat populer dikalangan tester, mampu membuat berbagai macam test scenario  dan serta dapat melakukan threading untuk keperluan performance testing.
  • https://jmeter.apache.org

done. Itulah 3 tools devops utama yang direkomendasikan untuk digunakan beserta dengan konsep dasar penggunaan serta hal-hal yang perlu diperhatikan dalam menjalankan devops terutama pada CI/CD dan automation testing.

~happy devops!

 

(Visited 8 times, 2 visits today)
Please follow and like us:

Leave a Reply