Dunia teknologi informasi punya satu kebiasaan yang kadang bikin teman-teman yang baru mulai belajar bisa garuk-garuk kepala: terlalu banyak istilah. Baru belajar programming sudah ketemu API, ORM, REST, Docker, Git, JWT. Naik sedikit ke backend ketemu Redis, Kubernetes, CI/CD, Microservices, Observability, sampai SRE.
Masalahnya, istilah-istilah tersebut sering muncul bersamaan. Akibatnya, kita tahu namanya tetapi belum tentu memahami apa sebenarnya fungsi masing-masing.
Padahal kalau dibongkar satu per satu, sebagian besar konsep tersebut sebenarnya cukup masuk akal. Bahkan beberapa di antaranya sudah sangat dekat dengan pekerjaan programmer sehari-hari.
Dalam artikel ini saya akan membahas istilah dunia IT, istilah programming, teknologi backend, database, DevOps, software architecture, security, testing, hingga project management dengan bahasa yang sederhana.
Tujuannya bukan supaya kamu hafal semua istilah IT, tetapi supaya ketika mendengar istilah tersebut dalam dokumentasi, pekerjaan, meeting, atau tutorial, kamu langsung memahami kira-kira apa yang sedang dibicarakan.
Daftar Isi
- Serverless
- CI/CD
- Docker
- Kubernetes
- Data Warehouse
- Building for Scale
- Kanban
- Load Balancer
- Caching
- REST API
- Environment
- Redis
- Authentication
- Raw SQL
- Scrum
- Sprint
- GET Function atau GET Request
- Unit Testing
- Automatic Testing
- Memcached
- Storage
- UML
- GraphQL
- Git
- gRPC
- Monolith
- Microservices
- RBAC
- JWT
- Indexing
- ORM
- Query Builder
- Scalability
- Observability
- Site Reliability dan SRE
- Full Request
- Bagaimana Semua Istilah IT Ini Saling Berhubungan?
- Kesimpulan
1. Serverless
Serverless adalah pendekatan menjalankan aplikasi tanpa programmer harus mengelola server secara langsung. Bukan berarti server benar-benar tidak ada. Server tetap digunakan, tetapi pengelolaannya ditangani oleh penyedia cloud.
Pada server tradisional, programmer biasanya harus memikirkan server, sistem operasi, resource, konfigurasi, deployment, dan berbagai urusan infrastruktur lainnya.
Dalam serverless, kita lebih fokus kepada kode atau fungsi yang ingin dijalankan.
Contoh konsep sederhananya:
User ↓ Function ↓ Proses ↓ Response
Serverless sering berhubungan dengan konsep Function as a Service atau FaaS.
Analogi sederhananya: server tradisional seperti kamu membuka restoran sendiri. Kamu harus memikirkan gedung, dapur, listrik, peralatan, dan perawatan. Serverless lebih seperti menyewa dapur yang infrastrukturnya sudah disiapkan sehingga kamu bisa lebih fokus memasak.
2. CI/CD
CI/CD adalah singkatan dari Continuous Integration dan Continuous Delivery atau Continuous Deployment.
Konsep ini digunakan untuk mengotomatisasi proses pengembangan dan deployment aplikasi.
Misalnya seorang programmer melakukan:
git add . git commit -m "Tambah fitur login" git push
Setelah kode masuk repository, sistem CI/CD dapat menjalankan proses seperti:
- Mengambil kode terbaru.
- Menjalankan unit test.
- Melakukan automatic testing.
- Melakukan build.
- Memeriksa apakah ada error.
- Melakukan deployment.
Jadi alurnya bisa menjadi:
Developer ↓ Git Push ↓ CI/CD ↓ Testing ↓ Build ↓ Deploy ↓ Production
CI/CD sangat berguna ketika sebuah tim melakukan deployment aplikasi secara rutin.
3. Docker
Docker adalah teknologi yang memungkinkan aplikasi dijalankan di dalam container.
Container dapat membawa aplikasi beserta lingkungan dan dependency yang dibutuhkan.
Misalnya sebuah aplikasi membutuhkan PHP versi tertentu, extension tertentu, Composer, dan konfigurasi tertentu. Dengan Docker, lingkungan tersebut dapat didefinisikan sehingga aplikasi lebih konsisten ketika dijalankan di komputer developer maupun server.
Docker juga membantu mengurangi masalah klasik:
"Di komputer saya jalan."
Karena environment aplikasi dapat dibuat lebih konsisten.
4. Kubernetes
Kubernetes atau sering disingkat K8s adalah platform untuk mengelola container, terutama ketika jumlah container dan service sudah semakin banyak.
Kalau Docker membantu menjalankan container, Kubernetes membantu mengatur container tersebut dalam skala besar.
Kubernetes dapat membantu melakukan:
- Deployment aplikasi.
- Scaling.
- Restart container yang bermasalah.
- Load balancing.
- Rolling update.
- Service discovery.
Analogi sederhananya:
Docker = kendaraan Kubernetes = pengelola armada kendaraan
5. Data Warehouse
Data Warehouse adalah sistem penyimpanan data yang dirancang terutama untuk analisis, reporting, dan Business Intelligence.
Berbeda dengan database aplikasi yang biasanya digunakan untuk transaksi sehari-hari, Data Warehouse digunakan untuk menganalisis data dalam jumlah besar dan dari berbagai sumber.
Misalnya sebuah organisasi memiliki data:
- Data penduduk.
- Data pendidikan.
- Data pelayanan.
- Data bantuan.
- Data pajak.
Data dari berbagai sistem dapat dikumpulkan ke Data Warehouse untuk kemudian digunakan dalam dashboard dan analisis.
6. Building for Scale
Istilah Building for Scale atau membangun sistem agar siap berkembang berarti sejak awal kita mempertimbangkan bahwa jumlah pengguna, transaksi, data, dan traffic mungkin akan bertambah.
Misalnya aplikasi hari ini hanya memiliki 100 pengguna. Kita tidak ingin desain aplikasinya langsung hancur ketika beberapa tahun kemudian jumlah pengguna menjadi 100.000.
Inilah yang berkaitan dengan konsep Scalability.
7. Kanban
Kanban adalah metode pengelolaan pekerjaan secara visual.
Board Kanban sederhana biasanya terdiri dari:
TODO → IN PROGRESS → TESTING → DONE
Contohnya dalam pengembangan website:
- TODO: Membuat halaman login.
- IN PROGRESS: Membuat dashboard.
- TESTING: Menguji API.
- DONE: Membuat database.
Keuntungan Kanban adalah semua anggota tim dapat melihat status pekerjaan dengan cepat.
8. Load Balancer
Load Balancer adalah komponen yang membagi request dari pengguna ke beberapa server.
Tanpa load balancer:
10.000 User
↓
Server 1
Dengan load balancer:
Load Balancer
/ | \
↓ ↓ ↓
Server 1 Server 2 Server 3
Load balancer membantu membagi beban dan memungkinkan aplikasi menggunakan beberapa server sekaligus.
9. Caching
Jika kamu menemukan istilah caching, jangan tertukar dengan "catching". Caching adalah teknik menyimpan data sementara agar data tersebut dapat diambil lebih cepat.
Misalnya sebuah query database membutuhkan waktu cukup lama. Jika hasil query tersebut tidak sering berubah, hasilnya dapat disimpan di cache.
Request ↓ Cache ↓ Jika tersedia → langsung dikembalikan ↓ Jika tidak → Database
Teknik caching sangat berguna untuk meningkatkan performa aplikasi.
10. REST API
REST API adalah pendekatan populer untuk membuat API menggunakan konsep HTTP.
Contoh endpoint:
GET /users GET /users/10 POST /users PUT /users/10 DELETE /users/10
GET biasanya digunakan untuk mengambil data, POST untuk membuat data, PUT atau PATCH untuk memperbarui data, dan DELETE untuk menghapus data.
REST API banyak digunakan untuk menghubungkan frontend dan backend.
React ↓ REST API ↓ Backend ↓ Database
11. Environment
Environment adalah lingkungan tempat aplikasi dijalankan.
Dalam pengembangan aplikasi biasanya dikenal:
- Development — lingkungan untuk programmer.
- Staging — lingkungan untuk pengujian sebelum production.
- Production — sistem yang digunakan pengguna sebenarnya.
Misalnya konfigurasi database development dan production tentu bisa berbeda.
Karena itu aplikasi biasanya menggunakan environment variable untuk menyimpan konfigurasi.
12. Redis
Redis adalah penyimpanan data berbasis memory yang terkenal karena kecepatannya.
Redis sering digunakan untuk:
- Caching.
- Session.
- Queue.
- Rate limiting.
- Temporary data.
- Pub/Sub.
Dalam aplikasi modern, Redis sering ditempatkan di antara aplikasi dan database untuk mempercepat akses data tertentu.
13. Authentication
Authentication adalah proses untuk mengetahui dan memverifikasi identitas pengguna.
Pertanyaan sederhananya:
"Siapa kamu?"
Misalnya user memasukkan email dan password. Sistem kemudian memverifikasi apakah identitas tersebut benar.
Jangan tertukar dengan authorization.
- Authentication: Siapa kamu?
- Authorization: Kamu boleh melakukan apa?
14. Raw SQL
Raw SQL berarti programmer menulis SQL secara langsung.
SELECT * FROM users WHERE id = 10;
Raw SQL memberikan kontrol yang sangat besar terhadap query database.
Namun programmer harus memahami keamanan seperti SQL Injection dan penggunaan parameterized query.
15. Scrum
Scrum adalah framework untuk pengembangan produk secara iteratif dan bertahap.
Dalam Scrum terdapat konsep seperti:
- Product Owner.
- Scrum Master.
- Developers.
- Product Backlog.
- Sprint.
- Daily Scrum.
- Sprint Review.
- Sprint Retrospective.
Scrum bukan hanya sekadar meeting setiap pagi. Scrum merupakan framework untuk membantu tim mengembangkan produk dalam siklus yang terstruktur.
16. Sprint
Sprint adalah periode waktu tertentu ketika tim mengerjakan sekumpulan pekerjaan yang sudah direncanakan.
Misalnya sebuah tim menentukan Sprint selama dua minggu dengan target:
- Login.
- Register.
- Dashboard.
- User Management.
Setelah Sprint selesai, hasilnya ditinjau dan tim melakukan evaluasi sebelum melanjutkan pekerjaan berikutnya.
17. GET Function atau GET Request
Jika istilah yang dimaksud adalah GET request, maka GET merupakan metode HTTP yang umumnya digunakan untuk mengambil data.
GET /api/users
Contoh lain:
GET /api/users/10
Artinya aplikasi meminta data user dengan ID 10.
GET berbeda dengan POST, PUT, PATCH, dan DELETE yang memiliki fungsi berbeda dalam komunikasi HTTP.
18. Unit Testing
Unit Testing adalah pengujian terhadap bagian kecil dari program.
Misalnya terdapat fungsi:
function tambah($a, $b) {
return $a + $b;
}
Kita dapat membuat test untuk memastikan:
tambah(2, 3) = 5
Dengan demikian programmer dapat mengetahui apakah fungsi kecil tersebut bekerja sesuai harapan.
19. Automatic Testing
Automatic Testing adalah pengujian yang dilakukan secara otomatis oleh komputer.
Unit Testing adalah salah satu jenis automatic testing, tetapi automatic testing mempunyai cakupan lebih luas.
Contohnya:
- Unit Test.
- Integration Test.
- API Test.
- End-to-End Test.
- Regression Test.
Automatic testing menjadi sangat berguna ketika digabungkan dengan CI/CD.
20. Memcached
Memcached adalah sistem caching berbasis memory.
Konsep sederhananya:
Application
↓
Memcached
↓
Cached Data
Memcached dan Redis sama-sama dapat digunakan untuk caching, tetapi Redis memiliki kemampuan dan struktur data yang lebih kaya.
21. Storage
Storage berarti tempat penyimpanan data.
Dalam aplikasi, storage dapat digunakan untuk menyimpan:
- Foto.
- Video.
- Dokumen.
- Backup.
- File hasil upload.
Storage dapat berupa penyimpanan lokal server maupun object storage pada layanan cloud.
22. UML
UML adalah singkatan dari Unified Modeling Language.
UML digunakan untuk memvisualisasikan dan mendokumentasikan sistem.
Beberapa diagram UML yang populer adalah:
- Use Case Diagram.
- Class Diagram.
- Sequence Diagram.
- Activity Diagram.
- State Diagram.
UML membantu programmer dan tim memahami rancangan sistem sebelum implementasi dilakukan.
23. GraphQL
GraphQL adalah query language untuk API.
Pada REST, client biasanya mengambil data melalui beberapa endpoint. Dengan GraphQL, client dapat menentukan data apa saja yang ingin diterima.
query {
user(id: 10) {
name
posts {
title
}
}
}
GraphQL banyak digunakan ketika kebutuhan pengambilan data dari client cukup kompleks.
24. Git
Git adalah version control system.
Git digunakan untuk mencatat perubahan kode dari waktu ke waktu.
Contoh perintah Git:
git add . git commit -m "Tambah fitur login" git push
Dengan Git, programmer dapat melihat riwayat perubahan dan bekerja bersama anggota tim.
Perlu diingat bahwa Git berbeda dengan GitHub. Git adalah version control system, sedangkan GitHub adalah platform yang menggunakan Git untuk hosting repository dan kolaborasi.
25. gRPC
gRPC adalah framework komunikasi antar service yang sering digunakan dalam sistem modern, terutama microservices.
Contohnya:
Order Service
↓
gRPC
↓
Payment Service
gRPC umumnya menggunakan Protocol Buffers atau Protobuf untuk mendefinisikan struktur data dan kontrak komunikasi.
26. Monolith
Monolith adalah arsitektur ketika berbagai fungsi aplikasi berada dalam satu aplikasi utama.
Application ├── Login ├── User ├── Product ├── Order ├── Payment └── Report
Monolith tidak otomatis berarti buruk.
Untuk aplikasi kecil dan menengah, monolith justru sering lebih sederhana untuk dikembangkan, dideploy, dan dipelihara.
27. Microservices
Microservices adalah pendekatan arsitektur yang memecah aplikasi menjadi beberapa service yang relatif independen.
User Service Order Service Payment Service Notification Service
Setiap service dapat mempunyai tanggung jawab yang berbeda.
Kelebihannya adalah service tertentu dapat dikembangkan dan di-scale secara independen.
Namun microservices juga menambah kompleksitas karena kita harus menangani networking, monitoring, deployment, komunikasi antar-service, distributed transaction, dan berbagai persoalan sistem terdistribusi lainnya.
28. RBAC
RBAC adalah singkatan dari Role-Based Access Control.
Hak akses pengguna ditentukan berdasarkan role.
Contohnya dalam aplikasi pemerintahan:
Super Admin Admin OPD Operator Viewer
Masing-masing role dapat memiliki permission yang berbeda.
29. JWT
JWT adalah singkatan dari JSON Web Token.
JWT sering digunakan dalam authentication API.
Alur sederhananya:
Login ↓ Server memverifikasi user ↓ Server membuat JWT ↓ Client menerima token ↓ Request berikutnya membawa token
JWT umumnya memiliki tiga bagian:
Header.Payload.Signature
JWT sering digunakan pada aplikasi web, mobile application, dan REST API.
Namun menggunakan JWT tidak otomatis membuat aplikasi aman. Sistem tetap membutuhkan HTTPS, validasi signature, expiry, pengelolaan token, dan mekanisme keamanan lainnya.
30. Indexing
Indexing dalam database adalah teknik membuat indeks agar pencarian data dapat dilakukan lebih efisien.
Misalnya tabel users memiliki kolom email dan aplikasi sering melakukan pencarian berdasarkan email.
SELECT * FROM users WHERE email = 'armin@example.com';
Kolom email dapat diberikan index agar database lebih mudah menemukan data yang dicari.
Namun index bukan berarti semakin banyak semakin baik. Index membutuhkan storage dan dapat menambah biaya pada operasi INSERT dan UPDATE.
31. ORM
ORM adalah singkatan dari Object-Relational Mapping.
ORM memungkinkan programmer berinteraksi dengan database melalui model atau object.
Contohnya pada Laravel:
User::where('email', $email)->first();
Daripada menulis SQL secara langsung untuk setiap operasi.
ORM dapat membuat kode aplikasi lebih nyaman dibaca dan meningkatkan produktivitas programmer.
32. Query Builder
Query Builder adalah cara membangun query database melalui API pemrograman.
Contohnya:
DB::table('users')
->where('status', 'active')
->get();
Secara konsep Query Builder berada di antara Raw SQL dan ORM.
Raw SQL ↓ Query Builder ↓ ORM
Namun ketiganya bukan berarti harus dipilih salah satu secara mutlak. Dalam proyek nyata, ketiganya bisa digunakan sesuai kebutuhan.
33. Scalability
Scalability adalah kemampuan sistem untuk menangani pertumbuhan beban.
Misalnya aplikasi berkembang:
100 user ↓ 1.000 user ↓ 10.000 user ↓ 100.000 user
Ada dua pendekatan scaling yang umum.
Vertical Scaling
Server diperbesar.
2 CPU → 8 CPU 4 GB RAM → 32 GB RAM
Horizontal Scaling
Server ditambah.
Server 1 Server 2 Server 3 Server 4
Horizontal scaling biasanya berkaitan erat dengan load balancer dan arsitektur aplikasi yang dapat dijalankan pada beberapa instance.
34. Observability
Observability adalah kemampuan untuk memahami kondisi internal sebuah sistem berdasarkan data yang dihasilkan oleh sistem tersebut.
Tiga komponen yang sangat umum adalah:
- Logs — catatan kejadian dalam aplikasi.
- Metrics — angka atau statistik sistem.
- Traces — perjalanan sebuah request melalui berbagai service.
Contohnya ketika sebuah API terasa lambat, observability membantu menjawab:
"Bagian mana yang sebenarnya membuat request menjadi lambat?"
35. Site Reliability dan SRE
Jika istilah yang dimaksud adalah Site Reliability, biasanya kita akan bertemu dengan istilah SRE atau Site Reliability Engineering.
SRE berfokus pada bagaimana menjaga sistem tetap reliable, available, performant, dan mampu menangani pertumbuhan.
Hal-hal yang sering berkaitan dengan SRE antara lain:
- Monitoring.
- Alerting.
- Incident Response.
- Automation.
- Capacity Planning.
- Reliability.
36. Full Request
Full Request bukan satu istilah teknis dengan definisi tunggal. Dalam konteks HTTP, istilah tersebut dapat digunakan untuk menyebut keseluruhan detail sebuah HTTP request.
Misalnya:
POST /api/users HTTP/1.1
Host: example.com
Authorization: Bearer xxx
Content-Type: application/json
{
"name": "Armin"
}
Secara sederhana, HTTP request dapat memiliki:
- Method.
- URL atau endpoint.
- Headers.
- Body.
Jadi ketika developer mengatakan "show me the full request", biasanya maksudnya adalah menampilkan seluruh detail request, bukan hanya URL atau data body.
Bagaimana Semua Istilah IT Ini Saling Berhubungan?
Bagian ini sebenarnya jauh lebih penting daripada menghafalkan definisi masing-masing istilah.
Bayangkan kita sedang membangun aplikasi modern.
USER
│
▼
LOAD BALANCER
│
┌───────────┴───────────┐
▼ ▼
SERVER 1 SERVER 2
│ │
└───────────┬───────────┘
▼
API
│
┌───────────┴───────────┐
▼ ▼
REDIS DATABASE
CACHING │
▼
DATA WAREHOUSE
Pada sisi development:
Developer
│
▼
Git
│
▼
CI/CD
│
├── Unit Testing
├── Automatic Testing
│
▼
Docker
│
▼
Kubernetes
Pada sisi arsitektur, aplikasi dapat menggunakan pendekatan:
Monolith
atau
Microservices
Komunikasi antar aplikasi atau service dapat menggunakan:
- REST API.
- GraphQL.
- gRPC.
Keamanannya dapat menggunakan:
Authentication
↓
JWT
↓
RBAC
Sementara sisi database dapat menggunakan:
Raw SQL Query Builder ORM Indexing
Dan ketika aplikasi semakin besar, kita mulai membutuhkan:
Scalability
↓
Load Balancer
↓
Horizontal Scaling
↓
Observability
↓
Site Reliability / SRE
Kesimpulan
Kalau kamu baru mulai masuk lebih serius ke dunia backend, DevOps, cloud, atau software architecture, jangan mencoba menghafalkan semua istilah IT sekaligus.
Lebih baik pahami hubungan antar konsepnya.
Misalnya:
- Git digunakan untuk version control.
- CI/CD mengotomatisasi proses testing dan deployment.
- Docker digunakan untuk menjalankan aplikasi dalam container.
- Kubernetes membantu mengelola banyak container.
- Redis dapat digunakan untuk caching dan kebutuhan data cepat.
- Load Balancer membagi traffic ke beberapa server.
- REST API, GraphQL, dan gRPC digunakan untuk komunikasi antar aplikasi atau service.
- ORM dan Query Builder membantu programmer berinteraksi dengan database.
- Indexing membantu mempercepat pencarian database.
- JWT dan RBAC berkaitan dengan authentication dan authorization.
- Unit Testing dan Automatic Testing membantu memastikan software bekerja sesuai harapan.
- Observability dan SRE membantu menjaga sistem tetap dapat dipantau dan reliable.
- Scalability berkaitan dengan kemampuan sistem menghadapi pertumbuhan.
Yang menarik, semakin dalam kamu masuk ke dunia programming, semakin terasa bahwa programming sebenarnya bukan cuma soal menulis kode.
Menulis:
if else for function class
itu baru sebagian kecil dari pekerjaan software engineering.
Ketika aplikasi mulai digunakan banyak orang, kita mulai berhadapan dengan database, caching, security, testing, deployment, monitoring, scaling, architecture, dan reliability.
Itulah alasan mengapa istilah-istilah seperti Docker, Kubernetes, Redis, CI/CD, REST API, Microservices, ORM, JWT, RBAC, Scalability, dan Observability semakin sering muncul dalam dunia kerja IT modern.
Dan menurut saya, cara terbaik mempelajarinya bukan dengan menghafalkan definisinya, tetapi dengan membangun sebuah aplikasi dan melihat sendiri kapan masing-masing teknologi tersebut benar-benar dibutuhkan.
Diskusi & Komentar