<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Rizalord's Blog]]></title><description><![CDATA[Junior Fullstack Developer who currently study at University of Merdeka Malang majoring in Management Information Systems. Interested in Devops, Cloud Computing]]></description><link>https://blog.rizalord.my.id</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 08:43:24 GMT</lastBuildDate><atom:link href="https://blog.rizalord.my.id/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Berkenalan dengan Istio]]></title><description><![CDATA[Halo semuanya disini saya akan menjelaskan mengenai Istio dan juga akan menjelaskan beberapa konsep cara kerja Istio sebagai Service Mesh.
Apa itu Istio?
Istio adalah salah satu service mesh populer yang bisa digunakan bersamaan dengan Kubernetes. Se...]]></description><link>https://blog.rizalord.my.id/berkenalan-dengan-istio</link><guid isPermaLink="true">https://blog.rizalord.my.id/berkenalan-dengan-istio</guid><category><![CDATA[#ServiceMesh]]></category><category><![CDATA[#istio]]></category><category><![CDATA[Microservices]]></category><category><![CDATA[infrastructure]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Ahmad Rizal Khamdani]]></dc:creator><pubDate>Wed, 08 Mar 2023 09:22:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1678171720368/2d17510a-8111-432b-bc4f-a57dc09c28e1.svg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Halo semuanya disini saya akan menjelaskan mengenai Istio dan juga akan menjelaskan beberapa konsep cara kerja Istio sebagai Service Mesh.</p>
<h3 id="heading-apa-itu-istio">Apa itu Istio?</h3>
<p>Istio adalah salah satu service mesh populer yang bisa digunakan bersamaan dengan Kubernetes. Service Mesh sendiri adalah sebuah cara atau arsitektur untuk mengelola komunikasi antar service di dalam cluster (microservice).</p>
<p>Dengan adanya Istio sebagai service mesh memudahkan kita dalam melakukan monitoring, manajemen traffic, penambahan security, dan policy dalam cluster Kubernetes kita.</p>
<h3 id="heading-fitur-fitur-istio">Fitur - Fitur Istio</h3>
<p>Istio memiliki beberapa fitur yang dapat membantu kita dalam mengatur cluster kubernetes kita, antara lain:</p>
<ul>
<li><p>Traffic Management</p>
</li>
<li><p>Security</p>
</li>
<li><p>Observability</p>
</li>
<li><p>Extensibility</p>
</li>
</ul>
<h3 id="heading-traffic-management">Traffic Management</h3>
<p><img src="https://istio.io/v1.0/docs/concepts/traffic-management/TrafficManagementOverview.svg" alt class="image--center mx-auto" /></p>
<p>Traffic Management adalah fitur dalam Istio yang berguna untuk manajemen trafic request di dalam cluster kita. Misalnya kita ingin ketika user melakukan request ke "<strong>/reviews</strong>", 80% user akan diarahkan ke review-service <strong>v1</strong> sedangkan 20% akan diarahkan ke review-service <strong>v2</strong>. Fitur ini bisa kita peroleh dengan menggunakan CRD bawaan Istio yaitu <strong>Virtual Service</strong> dan <strong>Destination Rule</strong>.</p>
<h3 id="heading-security">Security</h3>
<p>Fitur ini membantu kita dalam memberikan perlindungan pada aplikasi kita baik itu dari dalam cluster maupun dari luar (eksternal). Di dalam Istio terdapat fitur yang bernama <strong>mTLS.</strong></p>
<p>MTLS memungkinkan service di dalam cluster kita untuk bisa komunikasi dengan service lain dengan menggunakan protokol TLS, yang mana TLS ini dapat meningkatkan security ketika komunikasi antar service.</p>
<p><img src="https://banzaicloud.com/img/blog/istio/istio-mtls.png" alt class="image--center mx-auto" /></p>
<p>Cara kerja mTLS di Istio ini adalah:</p>
<ol>
<li><p>Ketika kita membuat workload (pod) Istio akan meng-inject satu container baru bernama <strong>Sidecar</strong>. Sidecar sendiri adalah nama lain dari Envoy Proxy.</p>
</li>
<li><p>Ketika akan melakukan komunikasi, request akan dilewatkan ke sidecar tersebut terlebih dahulu.</p>
</li>
<li><p>Sidecar akan membuat koneksi mTLS ke sidecar pada service lain yang akan dituju.</p>
</li>
<li><p>Setelah terjadi koneksi mTLS, sidecar akan memproses request tersebut dan meneruskannya ke service yang dituju.</p>
</li>
</ol>
<p>Dengan menggunakan mTLS ini, komunikasi antar service menjadi lebih aman dan terhindar dari ancaman seperti man-in-the-middle attack, karena komunikasi antar service dilakukan melalui koneksi terenkripsi.</p>
<p>Selain mTLS, Istio juga menyediakan fitur lain seperti <strong>authentication</strong> dan <strong>authorization</strong> untuk memperkuat security pada aplikasi kita. Fitur authentication digunakan untuk memastikan bahwa hanya service yang diberikan akses yang dapat melakukan request pada service lainnya, sedangkan fitur authorization digunakan untuk memastikan bahwa service tersebut memiliki hak akses untuk melakukan operasi yang diminta.</p>
<p>Dengan fitur-fitur keamanan yang disediakan oleh Istio, kita dapat lebih memperkuat security pada aplikasi kita, sehingga data dan informasi yang ditransfer antar service menjadi lebih aman.</p>
<h3 id="heading-observability">Observability</h3>
<p>Observability pada Istio adalah kemampuan untuk melihat dan menganalisis apa yang terjadi di dalam cluster kita. Istio menyediakan beberapa fitur untuk observability, di antaranya adalah:</p>
<ol>
<li><p><strong>Metrics</strong>: Istio menyediakan metric yang dapat digunakan untuk memantau kinerja dan keadaan cluster kita. Metric ini dapat dilihat melalui dashboard yang disediakan oleh Istio.</p>
</li>
<li><p><strong>Distributed Tracing</strong>: Istio menyediakan fitur distributed tracing yang memungkinkan kita untuk melihat perjalanan request yang dilakukan oleh service di dalam cluster kita. Dengan distributed tracing ini, kita dapat melihat waktu yang dibutuhkan oleh setiap service dalam memproses request tersebut, sehingga kita dapat mengetahui apakah terdapat bottleneck atau masalah pada salah satu service.</p>
</li>
<li><p><strong>Logging</strong>: Istio juga menyediakan fitur logging yang dapat digunakan untuk melihat log dari setiap request yang masuk ke dalam cluster kita. Dengan logging ini, kita dapat melihat detail dari setiap request yang masuk, seperti header, body, dan response dari request tersebut.</p>
</li>
</ol>
<p>Selain itu Istio juga menyediakan konsol untuk monitoring yang bernama <strong>Kiali</strong>. Kiali adalah salah satu open-source project yang digunakan untuk memonitor dan memvisualisasikan traffic di dalam cluster yang menggunakan Istio.</p>
<p><img src="https://istio.io/v1.14/docs/tasks/observability/kiali/kiali-graph.png" alt class="image--center mx-auto" /></p>
<p>Kiali menyediakan tampilan grafis yang mudah dipahami untuk memonitor dan memvisualisasikan traffic antar service di dalam cluster. Kiali juga dapat menampilkan informasi seperti request/response time, jumlah request yang dilakukan, serta performa dan status dari masing-masing service.</p>
<p>Selain itu, Kiali juga memiliki fitur tracing yang memungkinkan kita untuk melihat trace dari setiap request yang dilakukan di dalam cluster kita. Dengan fitur tracing ini, kita dapat mengetahui perjalanan request tersebut dan melihat performa dari setiap service yang terlibat dalam request tersebut.</p>
<p>Dengan adanya Kiali, kita dapat dengan mudah memonitor dan menganalisis kinerja dari aplikasi yang kita deploy di dalam cluster yang menggunakan Istio. Hal ini dapat membantu kita untuk mengetahui apakah terdapat masalah pada aplikasi kita dan memperbaikinya dengan cepat.</p>
<p>Secara keseluruhan, Istio dengan fitur-fitur observability dan konsol monitoring seperti Kiali dapat membantu kita dalam memantau dan menganalisis kinerja dari aplikasi kita di dalam cluster, sehingga kita dapat lebih mudah mendeteksi masalah dan meningkatkan performa dari aplikasi kita.</p>
<h3 id="heading-extensibility">Extensibility</h3>
<p>Untuk extensibility jujur saya kurang paham dengan fitur ini dan saya juga belum pernah mencobanya. Untuk fitur ini dari yang saya baca ini berguna untuk menambahkan fitur - fitur baru atau plugin ke dalam Istio. Fitur ini sementara saya belum membutuhkannya tetapi kalau teman-teman disini mau bisa untuk coba mempelajarinya sendiri.</p>
<h3 id="heading-kesimpulan">Kesimpulan</h3>
<p>Istio adalah service mesh yang memiliki beberapa fitur yang dapat membantu kita dalam mengatur cluster kubernetes kita, antara lain: Traffic Management, Security, Observability, dan Extensibility. Di dalam Istio terdapat Kiali yaitu salah satu open-source project yang digunakan untuk memonitor dan memvisualisasikan traffic di dalam cluster yang menggunakan Istio.</p>
<p>Tujuan saya menulis artikel ini adalah untuk meningkatkan skill saya dalam menulis artikel dan juga membantu teman - teman yang kesusahan dalam belajar Istio. Saya sendiri awal belajar Istio kesusahaan dengan istilah - istilah dan konsep yang sangat baru ini jadinya saya harap dengan artikel ini bisa membantu teman - teman dalam belajar dan menguasai Istio Service Mesh.</p>
]]></content:encoded></item><item><title><![CDATA[Pengalaman menggunakan NestJs]]></title><description><![CDATA[Sudah beberapa bulan sejak aku menggunakan Framework Nestjs ini dan kali ini aku akan membagikan pengalamanku selama menggunakan NestJs ini. 
Bagi yang belum tau apa itu NestJS, jadi NestJs itu adalah salah satu Backend Framework di Nodejs yang style...]]></description><link>https://blog.rizalord.my.id/pengalaman-menggunakan-nestjs</link><guid isPermaLink="true">https://blog.rizalord.my.id/pengalaman-menggunakan-nestjs</guid><category><![CDATA[nestjs]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[javascript framework]]></category><dc:creator><![CDATA[Ahmad Rizal Khamdani]]></dc:creator><pubDate>Sat, 03 Sep 2022 16:03:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1662220953858/zgyGoKbsd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sudah beberapa bulan sejak aku menggunakan Framework Nestjs ini dan kali ini aku akan membagikan pengalamanku selama menggunakan NestJs ini. </p>
<p>Bagi yang belum tau apa itu NestJS, jadi NestJs itu adalah salah satu Backend Framework di Nodejs yang style nya itu mirip seperti Angular dan sistemnya berbasis module. Maksudnya module disini adalah jadi semua logic aplikasi itu dipisah menjadi beberapa module sehingga kode kita lebih rapi dan clean. </p>
<p>Ketika pertama kali menggunakan Nestjs aku bingung banget, soalnya aku sendiri basicnya laravel trus coba pindah ke Nestjs itu beda banget. Banyak banget perbedaannya mulai dari migration, module, controller, service, orm, microservice dst. </p>
<p>Ini mungkin poin-poin utama ketika pertama kali aku menggunakan NestJs:</p>
<ul>
<li><strong>Controller dipisah berdasarkan module</strong>. Ketika kita pake Laravel biasanya kan kita langsung ke controllernya, tetapi di NestJs engga. Di Nestjs kita perlu bikin module nya dulu terus import module nya ke root module (AppModule). Menurutku disini prosesnya cukup ribet tapi lama kelamaan menurutku cara ini juga masuk akal. </li>
<li><strong>Banyak pilihan ORM</strong>. Di Nestjs banyak sekali pilihan ORM, ada yang TypeORM, Sequelize, sama Prisma. Dari sini kita harus nentuin mana yang terbaik, mudah dan performanya bagus. Aku udh pernah nyoba semuanya  dan yang menurutku cocok sama kebutuhan ku ya TypeORM. Disini tipsku buat yang baru belajar adalah pilih salah satu dan jangan gonta-ganti. Kalau udh pake TypeORM ya seterusnya pake TypeORM, jangan gonta ganti ke Sequelize atau Prisma. Cukup satu aja. </li>
<li><strong>Dependency Injection (DI)</strong>. Fitur DI ini sebenarnya sudah ada di framework - framework lain seperti Laravel, AdonisJS, Spring, dsb. Aku sendiri ketika pertama kali coba framework Nestjs ini bingung banget gmn cara kerjanya si DI ini. Alhasil mau nggak mau aku pelajari dulu cara kerja DI di youtube. Terus setelah aku tau, paham dan pake fitur DI ini, lama - lama aku ketagihan banget sama kelebihan2 yang ditawarkan. Performa aplikasi makin bagus dan kode makin clean. Dari sini aku tau kalo fitur DI itu wajib banget untuk semua Framework Backend.</li>
<li><strong>Fitur install sendiri</strong>. Jadi disini itu fitur - fitur Nestjs perlu install sendiri jadi nggak built in langsung dari Nestjs-nya. Beda dengan Laravel yang hampir semua fiturnya itu udh built-in di Laravelnya. Inilah alasan kenapa performa si Nestjs ini cepet banget untuk awal-awal.</li>
<li><strong>Tidak cocok untuk Fullstack MVC</strong>. Walaupun sebenarnya bisa untuk dibuat MVC tetapi Nestjs ini nggak cocok untuk MVC. Kenapa? Karena perlu banyak sekali waktu buat konfigurasi seperti Templating Engine, Middleware, Misah Logic, Testing dsb. Dari pengalamanku ini aku mungkin bisa saranin kalau untuk MVC lebih baik menggunakan Laravel yang fitur - fiturnya udh disediain ketimbang menggunakan Nestjs ini. Nestjs ini cocoknya digunakan buat Backend aja.</li>
<li><strong>Support Microservice</strong>. Ketika pertama kali menggunakan Nestjs ini aku baru tau kalau kita bisa bikin Microservice yang bisa saling komunikasi tanpa menggunakan Rest API ataupun Message Broker. Jadi kita komunikasinya langsung melalui protokol TCP nya. Nestjs ini cocok banget buat bikin aplikasi Microservice dan recommended banget. Banyak pilihan protocol mulai dari TCP, Kafka, RabbitMQ, GRPC, dsb.</li>
<li><strong>Susah bikin Mock Test</strong>. Untuk buat mock class di Nestjs itu susah banget, aku searching best practice2 buat bikin Mock di Nestjs itu susah banget dan kodenya itu banyak banget.</li>
</ul>
<p>Itu dia poin - poin yang bisa aku share ketika menggunakan framework NestJS. Kemudian aku juga akan share plus minus ketika menggunakan framework ini:</p>
<h2 id="heading-kelebihan">Kelebihan</h2>
<ul>
<li>Performa Bagus</li>
<li>Clean Code dengan Module Pattern</li>
<li>Support Microservice</li>
<li>Size Docker Image kecil (250mb - 300mb)</li>
<li>Cocok untuk aplikasi kecil - aplikasi besar</li>
</ul>
<h2 id="heading-kekurangan">Kekurangan</h2>
<ul>
<li>Dokumentasi kurang lengkap dan susah dimengerti untuk pemula</li>
<li>Kebanyakan ORM</li>
<li>Fitur Migration &amp; Seeder perlu cari dan install sendiri</li>
</ul>
<p>Jadi itu plus minus menurutku ketika menggunakan Nestjs. Ini semua dari pengalaman aku sendiri selama beberapa bulan membuat projek sendiri menggunakan framework ini. Overall menurutku framework ini cukup mirip seperti Spring Boot dan framework ini mungkin akan aku terus pake kalau sewaktu-waktu ada projekan yang mengguakan Nodejs. Framework Backend Nodejs paling bagus menurutku sampai sekarang ya Nestjs ini.</p>
<p>Oke mungkin itu saja yang bisa aku share, jika temen - temen ada pertanyaan bisa tanya melalui kolom komentar dan terimakasih juga sudah meluangkan waktu buat membaca artikel ini. Sampai jumpa di artikel selanjutnya.</p>
]]></content:encoded></item><item><title><![CDATA[Setup Express, Typescript, dan Jest]]></title><description><![CDATA[Halo semuanya, ini adalah artikel kedua saya dan disini mungkin saya akan membahas atau memberikan tutorial tentang cara setup aplikasi Express dengan Typescript dan Jest. Nah alasan saya bikin artikel ini sebenarnya karena saya sendiri itu kadang pe...]]></description><link>https://blog.rizalord.my.id/setup-express-typescript-dan-jest</link><guid isPermaLink="true">https://blog.rizalord.my.id/setup-express-typescript-dan-jest</guid><category><![CDATA[Express]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[Testing]]></category><category><![CDATA[Software Testing]]></category><dc:creator><![CDATA[Ahmad Rizal Khamdani]]></dc:creator><pubDate>Mon, 28 Feb 2022 11:54:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1646044617867/5ocSrLSIc.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Halo semuanya, ini adalah artikel kedua saya dan disini mungkin saya akan membahas atau memberikan tutorial tentang cara setup aplikasi <strong>Express</strong> dengan <strong>Typescript</strong> dan <strong>Jest</strong>. Nah alasan saya bikin artikel ini sebenarnya karena saya sendiri itu kadang pelupa, saya sering gonta-ganti framework dalam ngerjain suatu project, misal projek pertama saya pakai Express, projek kedua pakai Laravel, projek ketiga pindah lagi ke Flutter, nah ini yang bikin saya sering lupa. Akhirnya saya buat artikel ini biar gampang ngingatnya sekalian share juga ke kalian tentang cara setupnya. Kalau begitu tanpa basa basi lagi kita mulai pembahasannya..</p>
<h2 id="heading-langkah-setup">Langkah Setup</h2>
<ol>
<li><p>Langkah pertama yang harus dilakukan adalah kita buat projectnya terlebih dahulu, yaitu kita pakai..</p>
<pre><code>npm <span class="hljs-keyword">init</span> -y
</code></pre></li>
<li><p>Kemudian kita perlu setup tsconfig nya.</p>
<pre><code>tsc <span class="hljs-operator">-</span><span class="hljs-operator">-</span>init
</code></pre></li>
<li><p>Selanjutnya kita install terlebih dahulu dependecy-dependency nya.</p>
<pre><code>yarn add express
yarn add <span class="hljs-operator">-</span>D typescript @types<span class="hljs-operator">/</span>express @types<span class="hljs-operator">/</span>node jest @types<span class="hljs-operator">/</span>jest ts<span class="hljs-operator">-</span>jest supertest @types<span class="hljs-operator">/</span>supertest ts<span class="hljs-operator">-</span>node<span class="hljs-operator">-</span>dev
</code></pre><p>Note: Jadi disini kita perlu install typescript, express, jest, ts-jest, supertest dan ts-node-dev. <code>ts-jest</code> disini dipakai supaya kita bisa menggunakan <code>import</code> di file test kita.</p>
</li>
<li><p>Kita buat file <code>jest.config.json</code> dan kita ketik.</p>
<pre><code>module.exports <span class="hljs-operator">=</span> {
 <span class="hljs-string">"testPathIgnorePatterns"</span>: [
   <span class="hljs-string">"./build"</span>,
   <span class="hljs-string">"./node_modules"</span>
 ],
 <span class="hljs-string">"transform"</span>: {
   <span class="hljs-string">"^.+\\.ts?$"</span>: <span class="hljs-string">"ts-jest"</span>
 }
}
</code></pre></li>
<li><p>Kita ubah sedikit konfigurasi di <code>tsconfig.json</code> seperti ini.</p>
<pre><code><span class="hljs-string">"outDir"</span>: <span class="hljs-string">"./build"</span>, 
<span class="hljs-string">"rootDir"</span>: <span class="hljs-string">"./src"</span>,
</code></pre></li>
<li><p>Kita coba bikin file entrypoint nya di <code>src/index.ts</code> seperti ini.</p>
<pre><code><span class="hljs-keyword">import</span> express <span class="hljs-keyword">from</span> <span class="hljs-string">"express"</span>
<span class="hljs-keyword">const</span> app = express()
<span class="hljs-keyword">const</span> port = process.env.PORT || <span class="hljs-number">3000</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> app
</code></pre></li>
<li><p>Kemudian kita bikin file unit testnya di <code>src/index.unit.test.ts</code>.</p>
<pre><code><span class="hljs-keyword">import</span> app <span class="hljs-keyword">from</span> <span class="hljs-string">'./index'</span>
<span class="hljs-keyword">import</span> request <span class="hljs-keyword">from</span> <span class="hljs-string">'supertest'</span>  
describe(<span class="hljs-string">'Test App'</span>, <span class="hljs-function"><span class="hljs-params">()</span> =&gt;</span> {
 it(<span class="hljs-string">'should run without problem'</span>, <span class="hljs-function"><span class="hljs-params">()</span> =&gt;</span> {
     expect(<span class="hljs-literal">true</span>).toBe(<span class="hljs-literal">true</span>);
 })
})
</code></pre></li>
<li><p>Langkah terakhir yaitu kita setting di <code>package.json</code>.</p>
<pre><code><span class="hljs-string">"scripts"</span>: {
 <span class="hljs-string">"dev"</span>: <span class="hljs-string">"tsnd --respawn src/index"</span>,
 <span class="hljs-string">"build"</span>: <span class="hljs-string">"tsc"</span>,
 <span class="hljs-string">"test"</span>: <span class="hljs-string">"jest"</span>,
 <span class="hljs-string">"test:watch"</span>: <span class="hljs-string">"jest --watchAll"</span>,
 <span class="hljs-string">"test:unit"</span>: <span class="hljs-string">"jest unit"</span>,
 <span class="hljs-string">"test:int"</span>: <span class="hljs-string">"jest int"</span>,
 <span class="hljs-string">"start"</span>: <span class="hljs-string">"node build/index"</span>
},
</code></pre></li>
<li><p>Selesai! Tinggal kita run aja sesuai scriptnya.</p>
</li>
</ol>
<p>Oke setupnya semua udah selesai, disini aku mau jelasin sedikit lagi karena mungkin temen-temen disini ada yang sedikit belum paham. Di langkah ke <strong>3</strong> itu ada beberapa dependency seperti <code>ts-jest</code>, <code>supertest</code> dan <code>ts-node-dev</code>. </p>
<ul>
<li><code>ts-jest</code> ini disini dibutuhin banget biar kita bisa pakai <code>import</code> statement di file test kita. Kalo kita nggak pakai ini maka setiap kali kita mau pakai module kita perlu pakai <code>require</code>. Saya sendiri lebih suka pakai <code>import</code> ketimbang pakai <code>require</code>.</li>
<li><code>supertest</code> ini diperlukan supaya kita bisa ngetes api (http) kita. Misal kita mau ngetest <code>GET /api/hello</code> maka kita pakai dependency <code>supertest</code> ini.</li>
<li><code>ts-node-dev</code> ini digunakan untuk debug/run file typescript kita secara <strong>watch</strong>. Maksud <strong>watch</strong> disini yaitu ketika kita ubah code kita maka secara otomatis server kita akan restart sendiri tanpa perlu kita stop-run manual.</li>
</ul>
<p>Kemudian di langkah ke <strong>4</strong> itu ada code <code>testPathIgnorePatterns</code>, ini digunakan supaya ketika kita jalankan test, directory <strong>build</strong> dan <strong>node_modules</strong> akan diabaikan. Jika tidak maka script <code>test</code> akan menjalankan test yang ada di directory manapun dan kita nggak mau karena kita cuma pingin jalanin test yang ada di folder <strong>src</strong> dan folder <strong>tests</strong>.</p>
<p>Jadi itu dia cara setup dan juga sedikit penjelasannya, semoga bermanfaat. Jika dirasa artikel ini bermanfaat jangan lupa di like dan share ya, terimakasih.</p>
]]></content:encoded></item><item><title><![CDATA[Apa itu Docker? Dan kenapa Docker sangat populer?]]></title><description><![CDATA[Halo semuanya, ini adalah artikel pertama saya dan di artikel ini saya akan sharing tentang teknologi yang sering digunakan dan cukup populer di kalangan developer, yaitu Docker.
Apa itu Docker?
Kalau dari saya sendiri, Docker itu adalah tool yang bi...]]></description><link>https://blog.rizalord.my.id/apa-itu-docker-dan-kenapa-docker-sangat-populer</link><guid isPermaLink="true">https://blog.rizalord.my.id/apa-itu-docker-dan-kenapa-docker-sangat-populer</guid><category><![CDATA[Docker]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Ahmad Rizal Khamdani]]></dc:creator><pubDate>Sat, 05 Feb 2022 17:57:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1644081888093/1TCziSLaF.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Halo semuanya, ini adalah artikel pertama saya dan di artikel ini saya akan sharing tentang teknologi yang sering digunakan dan cukup populer di kalangan developer, yaitu <strong>Docker</strong>.</p>
<h3 id="heading-apa-itu-docker">Apa itu Docker?</h3>
<p>Kalau dari saya sendiri, Docker itu adalah tool yang bisa kita gunakan untuk menjalankan Image di OS kita dengan size yang sangat kecil. Nah Image yang saya maksud disini bukanlah image seperti Windows, Linux, dsb melainkan image seperti Mysql, Mongodb, PHP, Nodejs, dan seterusnya.</p>
<p>Misalkan kita pernah saat membuat web di local kita biasanya kan pasti menggunakan XAMPP? Di XAMPP sendiri kan sudah ada databasenya yaitu Mysql, tapi bagaimana jika kita butuh database yang lai n seperti Postgresql, Mongodb, Redis? Kita pastinya harus mendownload softwarenya terlebih dahulu, kemudian konfigurasi port, username, password, database dan sebagainya. Kemudian ketika mau uninstall kita perlu ke (kalo windows) Control Panel kemudian Uninstall. Kemudian kalo mau install lagi ya install lagi dari awal pake installernya. Ini semua bukankah cukup ribet?</p>
<p>Nah maka dari itu Docker adalah solusinya bagi permasalahan tersebut.</p>
<p>Docker memberikan solusi dimana kita tidak perlu melakukan installasi yang ribet seperti yang saya jelaskan diatas. Misalkan kita butuh database Postgresql, dengan docker kita cupa perlu install dengan perintah:</p>
<pre><code><span class="hljs-attribute">docker</span> pull postgresql
</code></pre><p>Sesimpel itu. Tetapi ini masih dalam bentuk Image, kita perlu membuat terlebih dahulu containernya sebelum menggunakan postgresqlnya. Nah apa sih <strong>Image</strong> dan <strong>Container</strong> itu? </p>
<p>Image itu adalah blueprintnya, sedangkan Container adalah object/aplikasinya.</p>
<p>Sama seperti dalam OOP, Image bisa diibaratkan seperti Class dan Container bisa diibaratkan seperti Object. Jadi dalam 1 image kita bisa membuat beberapa container semau kita. Misal kita mau bikin 3 Aplikasi Postgresql, ya kita bikin 3 container dari image postgresql. Container yang kita bikin juga bisa kita hapus dengan perintah</p>
<pre><code><span class="hljs-attribute">docker</span> container rm namacontainer
</code></pre><p>Cukup mudah dan simpel bukan? Tetapi docker bukan buat itu saja. Docker punya banyak sekali manfaat untuk membantu kita sebagai programmer/developer.</p>
<h3 id="heading-manfaat-docker">Manfaat Docker</h3>
<p>Manfaat docker yang saya ketahui antara lain:</p>
<ul>
<li>Membantu instal aplikasi di local tanpa perlu installer</li>
<li>Konfigurasi yang sangat mudah</li>
<li>Cross platform, baik itu Windows, Linux atau MacOS, semua sudah support. Jadi tidak perlu khawatir apakah aplikasi bisa berjalan di platform yang lain.</li>
<li>Membantu proses production dimana saat kita menggunakan vps kita tidak perlu install git, clone repository, install database, install php dsb. Semua sudah otomatis jika kita menggunakan docker, terutama <strong>Docker Compose</strong></li>
<li>Bisa share image dengan teman/tim kita, bisa pakai yang namanya <strong>Dockerhub</strong></li>
</ul>
<p>Mungkin itu saja manfaat yang saya ketahui, tetapi manfaat nya sepertinya masih banyak lagi. Temen - temen bisa coba ulik sendiri dan coba sendiri untuk mulai menggunakan Docker.</p>
<h3 id="heading-kesimpulan">Kesimpulan</h3>
<p>Docker sendiri open source dan bisa diinstal dengan mudah, bisa baca dokumentasinya di web officialnya. Punya banyak sekali manfaat membuat Docker sangatlah populer di kalangan programmer dan developer. Untuk tutorial lengkap menggunakan docker bisa cek di youtube nya <strong>Programmer Zaman Now</strong>, saya sendiri belajar semua tentang docker dari channel youtube tersebut. </p>
<p>Untuk linknya video tutorialnya bisa klik <a target="_blank" href="https://youtu.be/3_yxVjV88Zk">disini</a>.</p>
<p>Mungkin itu saja sekian artikel pertama saya, di artikel selanjutnya mungkin saya akan membahas teknologi lain seperti Kubernetes, Message Broker, Cloud Computing, dsb. </p>
<p>Terimakasih sudah membaca, jika merasa artikel ini bermanfaat bisa tolong di share ke temen-temen ya.</p>
]]></content:encoded></item></channel></rss>