
Membangun Model Klasifikasi dengan Decision Trees
Apa itu Model Klasifikasi? Model klasifikasi adalah salah satu jenis model machine learning yang digunakan untuk memprediksi kelas atau label dari data yang diberikan.
Ketika kita mengembangkan aplikasi, salah satu tantangan utama yang sering dihadapi adalah mengelola berbagai konfigurasi, seperti informasi database, API key, dan secret key lainnya. Biasanya, konfigurasi-konfigurasi ini diletakkan dalam file khusus seperti .env
. Namun, metode ini memiliki keterbatasan, terutama ketika aplikasi mengalami perubahan konfigurasi. Kita perlu mengupdate file .env
, mendeploy ulang aplikasi, dan bagi aplikasi mobile, harus merilisnya kembali ke Play Store atau App Store, yang mengharuskan pengguna untuk mengunduh ulang versi terbaru.
Proses ini tentu sangat tidak efisien dan merepotkan.
Namun, bayangkan jika konfigurasi tersebut disimpan di dalam sebuah layanan yang terpisah. Dengan cara ini, ketika ada perubahan, kita hanya perlu mengupdate layanan tersebut tanpa perlu memperbarui aplikasi secara langsung. Salah satu solusi yang bisa digunakan adalah dengan memanfaatkan Consul dan Vault.
Consul merupakan sebuah alat yang memiliki fitur penyimpanan key-value yang bisa kita manfaatkan untuk menyimpan konfigurasi. Namun, untuk menangani secret key yang lebih sensitif, Vault memberikan fitur keamanan tambahan dengan mengenkripsi data sebelum menyimpannya. Jadi, kombinasi Consul dan Vault memungkinkan kita menyimpan konfigurasi dengan aman dan mudah diakses.
Menurut Consul vs Vault, “Consul dikategorikan sebagai alat Open Source Service Discovery, sementara Vault masuk dalam kategori Secrets Management.” Oleh karena itu, untuk keamanan yang lebih baik, kita perlu menggabungkan Vault dengan Consul agar secret key tersimpan dengan aman.
Pada artikel ini, kita akan membahas beberapa langkah teknis berikut:
Seluruh konfigurasi yang akan digunakan berbasis Docker dan docker-compose. Jika belum familiar dengan Docker, ada baiknya mempelajarinya terlebih dahulu. Namun, tidak perlu khawatir karena seluruh konfigurasi sudah siap pakai dan dapat dijalankan dengan mudah.
Struktur proyek yang akan kita bangun adalah sebagai berikut:
.
├── consul
│ ├── config
│ │ └── consul-config.json
│ └── Dockerfile
├── docker-compose.yml
└── vault
├── config
│ └── vault-config.json
├── Dockerfile
├── logs
└── policies
Langkah pertama adalah membuat Dockerfile untuk Vault di folder vault
dengan kode berikut:
FROM alpine:3.11
ENV VAULT_VERSION 1.4.1
RUN mkdir -p /vault
RUN apk --no-cache add bash ca-certificates wget
RUN wget --quiet --output-document=/tmp/vault.zip https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip && \
unzip /tmp/vault.zip -d /vault && \
rm -f /tmp/vault.zip && \
chmod +x /vault
ENV PATH="PATH=$PATH:$PWD/vault"
COPY ./config/vault-config.json /vault/config/vault-config.json
EXPOSE 8200
ENTRYPOINT ["vault"]
Selanjutnya, buat konfigurasi Vault dalam vault/config/vault-config.json
:
{
"storage": {
"consul": {
"address": "consul:8500",
"path": "vault/"
}
},
"listener": {
"tcp": {
"address": "0.0.0.0:8200",
"tls_disable": 1
}
},
"ui": true
}
Konfigurasi ini menyimpan data Vault di alamat Consul.
Selanjutnya, kita setup Consul dengan membuat file consul/Dockerfile
:
FROM alpine:3.11
ENV CONSUL_VERSION 1.7.3
RUN mkdir /consul
RUN apk --no-cache add bash ca-certificates wget
RUN wget --quiet --output-document=/tmp/consul.zip https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip && \
unzip /tmp/consul.zip -d /consul && \
rm -f /tmp/consul.zip && \
chmod +x /consul/consul
ENV PATH="PATH=$PATH:$PWD/consul"
COPY ./config/consul-config.json /consul/config/config.json
EXPOSE 8300 8400 8500 8600
ENTRYPOINT ["consul"]
Lalu tambahkan konfigurasi dalam consul/config/consul-config.json
:
{
"datacenter": "localhost",
"data_dir": "/consul/data",
"log_level": "DEBUG",
"server": true,
"ui": true,
"ports": {
"dns": 53
}
}
Setelah selesai dengan setup Vault dan Consul, kita akan mengintegrasikannya melalui docker-compose. Berikut adalah konfigurasi di docker-compose.yml
:
version: '3.7'
services:
vault:
build: ./vault
ports:
- 8200:8200
volumes:
- ./vault/config:/vault/config
depends_on:
- consul
consul:
build: ./consul
ports:
- 8500:8500
Untuk menjalankan semua service, cukup gunakan perintah:
docker-compose up --build
Setelah semuanya berjalan, kita dapat menguji penyimpanan dan pengambilan secret key menggunakan perintah berikut di terminal:
curl --header "X-Vault-Token: <your-token>" --request GET http://127.0.0.1:8200/v1/kv/db-config
Anda akan mendapatkan respons berisi konfigurasi yang telah disimpan di Vault. Dengan metode ini, integrasi Vault dan Consul memudahkan pengelolaan secret key dengan aman dan fleksibel.
Dengan menggunakan Vault dan Consul, kita dapat mengelola secret key dengan aman dan efisien. Kita tidak perlu khawatir tentang kebocoran data karena Vault akan mengenkripsi data sebelum disimpan di Consul. Selain itu, dengan menggunakan Docker, kita dapat dengan mudah membuat dan menjalankan layanan ini di lingkungan pengembangan maupun produksi.
Saya sediakan pula repository lengkapnya di github:
Saefulloh Maslul
Storing secret key with vault and consul
Apa itu Model Klasifikasi? Model klasifikasi adalah salah satu jenis model machine learning yang digunakan untuk memprediksi kelas atau label dari data yang diberikan.
Apa itu Regresi Linier? Regresi linier adalah metode statistik yang digunakan untuk memahami hubungan antara dua variabel, yaitu variabel dependen dan independen.
Setelah kita membahas Regresi dan Klasifikasi pada post sebelumnya, yang merupakan tipe machine learning Supervised, sekarang kita akan membahas tipe machine learning yang lain, yaitu Unsupervised Learning.
Apa itu regresi? Apa itu klasifikasi? Sebelum kita masuk ke definisi, mari kita pahami beberapa tipe machine learning.