yet another blog about computer, technology, programming, and internet

Thursday, July 10, 2014

Tentang Microservices

Thursday, July 10, 2014 Posted by Ismail Habib 21 comments
Apa sih microservices itu? Sepertinya tidak ada definisi yang baku. Sebagian orang mengaitkannya dengan SOA (Service Oriented Architecture). Kalau saya pribadi lebih suka menggunakan term "SOA a la UNIX" untuk mendefinisikannya. Maksudnya disini adalah setiap service akan fokus pada satu fungsionalitas tertentu. Satu service dan service lainnya saling berkomunikasi untuk menghasilnya business value yang sesungguhnya.

Sedikit latar belakang, saya bukan ahli dalam bidang ini. Hanya kebetulan topik ini sedang banyak didiskusikan, seperti yang dituliskan juga di report Technology Radar 2014nya ThoughtWorks. Reportnya bisa dilihat di sini: http://thoughtworks.fileburst.com/assets/technology-radar-july-2014-en.pdf.

Kalau diskusi tentang microservices, sepertinya tidak lengkap kalau tidak dimulai dari arsitektur monolitik. Arsitektur monolitik, seperti namanya, punya arti bahwa semua fungsionalitas berada pada satu unit saja. Unit ini menangani segalanya, business logic, database access, templating, dll. Dalam kasus web application, struktur aplikasi monolitik biasanya terdiri dari client-side, server-side, dan database. Arsitektur monolitik ini tentunya punya kelemahan-kelamahan yang solusinya bisa dialamatkan oleh microservices.

Apa saja kekuatan microservices dibandingkan dengan monolitik?
Yang pertama, microservices memberikan fleksibilitas bagi developer untuk menentukan tools yang akan digunakan untuk implementasi sebuah service tanpa harus memaksakan tools tersebut untuk digunakan pada service-service lainnya. Hal ini sangat memungkinkan karena antara satu service dan service lainnya tidak tightly coupled. Komunikasi antara satu service di microservices dengan service lainnya umumnya dilakukan via messaging atau web service. Keduanya bisa diimplementasi dengan menggunakan teknologi yang berbeda.
Kedua, microservices memungkinkan team splitting dilakukan dengan lebih mudah. Satu tim yang menangani sebuah microservice bisa dengan mudah memisahkan diri dari tim lainnya karena, mereka tidak berbagi code base dan hanya terikat dengan interface yang didefinisikan di dalam service-service tersebut.
Ketiga, memisahkan fungsionalitas dalam service-service terpisah menjadikan service-service tersebut terisolasi satu sama lain. Dengan kata lain, resiko dan problem dalam satu service akan lebih mudah dilokalisir. Termasuk di dalamnya adalah permasalahan dengan legacy system. Salah satu contohnya adalah website The Guardian yang mulai dengan aplikasi monolitik dan kemudian berevolusi menjadi microservices. Aplikasi yang dikembangkan di awal tetap dapat dipertahankan meskipun sudah menjadi legacy dan tidak fleksibel.
Keempat, microservices memungkinkan pembedaan profil satu service dengan service lainnya, terutama yang berhubungan dengan scaling up.

Masih banyak keunggulan microservices yang tidak saya sebutkan disini, terutama karena empat poin yang saya sebutkan di atas adalah major concern yang saya rasakan selama bekerja sebagai software engineer. Yang perlu diingat, selain punya kekuatan, seorang sofware architect juga harus menyadari tantangan yang dihadapi dalam mengimplementasikan sistem dengan arsitektur microservices. Tapi mungkin ini bahasan di posting yang lain :)

21 comments:

  1. PromDresses2017 online shop is the best choice for your special occasion. If your budget or just looking for a great deal, we have a great selection of affordable prom gowns under $100.

    ReplyDelete
  2. thankyou

    http://ahloo.com/

    ReplyDelete
  3. great post. i like it. feeling great when reading your post .

    retrica  | happy wheels |  superfighters 2   | unblocked games |cat mario | atari breakout game |

    ReplyDelete
  4. Really a vry nice blog i really appreciate all your efforts ,thank you so mch for sharing this valuable information with all of us
    Packers And Movers Chennai

    ReplyDelete
  5. Artificial Intelligence is the latest technology that transforms the way the E-commerce store performs. Thanks for sharing an informative blog.
    Hire Magento Developer
    Hire Web Developerc
    Hire Wordpress Programmer
    Hire PHP Developer India
    Mobile App Development India

    ReplyDelete
  6. Enjoyed every bit of your blog article.Really looking forward to read more. Really Cool.@ Packers And Movers Mumbai

    ReplyDelete