HTTP

HTTP (Hypertext Transfer Protocol) memungkinkan komunikasi browser-server melalui permintaan dan respons. Protokol stateless menggunakan metode seperti GET dan POST. HTTPS menyediakan keamanan terenkripsi. Versi yang lebih baru (HTTP/2, HTTP/3) menawarkan kinerja yang lebih baik. Penting untuk pemahaman pengembangan web.


Cara Kerjanya:
a. Permintaan (Request): Saat Anda mengetik alamat web atau mengklik tautan, browser Anda mengirimkan permintaan HTTP ke server web.

b. Respons (Response): Server web menerima permintaan tersebut dan mengirimkan kembali respons HTTP yang berisi data halaman web yang diminta (HTML, gambar, dll.).

c. Transfer Data: Data ini kemudian diolah dan ditampilkan oleh browser Anda sebagai halaman web yang bisa Anda lihat.

HTTP/0.9 - Satu Baris (1991)

Versi HTTP pertama yang terdokumentasi adalah HTTP/0.9 yang diperkenalkan pada tahun 1991. Protokol ini merupakan protokol paling sederhana yang pernah ada; hanya memiliki satu metode bernama GET. Jika klien ingin mengakses halaman web tertentu di server, klien akan membuat permintaan sederhana seperti di bawah ini.

Contohnya:

GET /index.html

Dan respon dari server akan terlihat seperti berikut

(response body)

(connection closed)

Artinya, server akan menerima permintaan, membalas dengan HTML sebagai respons, dan segera setelah konten ditransfer, koneksi akan ditutup.

· Tidak ada header

· GETadalah satu-satunya metode yang diizinkan

· Respons harus berupa HTML

Seperti yang Anda lihat, protokol itu sebenarnya tidak lebih dari sekadar batu loncatan untuk apa yang akan datang.


HTTP/1.0 - 1996

Pada tahun 1996, versi HTTP berikutnya yaitu HTTP/1.0 berkembang dan jauh lebih baik dari versi aslinya.

Berbeda dengan HTTP/0.9 yang hanya dirancang untuk respons HTML, HTTP/1.0 kini dapat menangani format respons lain, misalnya gambar, berkas video, teks biasa, atau jenis konten lainnya. HTTP/1.0 menambahkan lebih banyak metode (misalnya POST dan HEAD), format permintaan/respons diubah, header HTTP ditambahkan ke permintaan dan respons, kode status ditambahkan untuk mengidentifikasi respons, dukungan set karakter diperkenalkan, tipe multi-bagian, otorisasi, caching, pengodean konten, dan masih banyak lagi.


Berikut ini adalah contoh permintaan dan respons HTTP/1.0:


GET / HTTP/1.0

Host: cs.fyi

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)

Accept: */*

Seperti yang bisa Anda lihat, di samping permintaan, klien juga telah mengirimkan informasi pribadinya, jenis respons yang diperlukan, dsb. Sementara di HTTP/0.9 klien tidak akan pernah dapat mengirimkan informasi tersebut karena tidak ada header.

Contoh tanggapan terhadap permintaan di atas mungkin terlihat seperti di bawah ini


HTTP/1.0 200 OK

Content-Type: text/plain

Content-Length: 137582

Expires: Thu, 05 Dec 1997 16:00:00 GMT

Last-Modified: Wed, 5 August 1996 15:55:28 GMT

Server: Apache 0.84



(response body)

(connection closed)

Di awal respons terdapat HTTP/1.0 (HTTP diikuti oleh nomor versi), kemudian ada kode status 200 diikuti oleh frasa alasan (atau deskripsi kode status, jika Anda mau).

Dalam versi yang lebih baru ini, header permintaan dan respons masih dikodekan dalam format ASCII, tetapi isi responsnya bisa berupa jenis konten apa pun, misalnya gambar, video, HTML, teks biasa, atau jenis konten lainnya. Jadi, server kini dapat mengirimkan jenis konten apa pun ke klien; tak lama setelah diperkenalkan, istilah "Hyper Text" dalam HTTP menjadi kurang tepat. HMTP atau Hypermedia Transfer Protocol mungkin lebih masuk akal, tetapi, saya rasa, kita akan terjebak dengan istilah itu seumur hidup.

Salah satu kelemahan utama HTTP/1.0 adalah Anda tidak dapat memiliki beberapa permintaan per koneksi. Artinya, setiap kali klien membutuhkan sesuatu dari server, ia harus membuka koneksi TCP baru dan setelah permintaan tunggal itu terpenuhi, koneksi akan ditutup. Dan untuk setiap persyaratan berikutnya, itu harus berada pada koneksi baru. Mengapa itu buruk? Baiklah, mari kita asumsikan bahwa Anda mengunjungi halaman web yang memiliki 10 gambar, 5 stylesheet dan 5 file javascript, totalnya menjadi 20 item yang perlu diambil ketika permintaan ke halaman web itu dibuat. Karena server menutup koneksi segera setelah permintaan terpenuhi, akan ada serangkaian 20 koneksi terpisah di mana masing-masing item akan dilayani satu per satu pada koneksi terpisah mereka. Sejumlah besar koneksi ini mengakibatkan penurunan kinerja yang serius karena memerlukan koneksi TCP baru yang memberikan penalti kinerja yang signifikan karena jabat tangan tiga arah diikuti oleh mulai lambat.

Jabat Tangan Tiga Arah

Jabat tangan tiga arah dalam bentuk sederhananya adalah bahwa semua koneksi TCP diawali dengan jabat tangan tiga arah di mana klien dan server berbagi serangkaian paket sebelum mulai berbagi data aplikasi.

SYN - Klien mengambil nomor acak, katakanlah x, dan mengirimkannya ke server.

SYN ACK - Server mengakui permintaan dengan mengirimkan paket ACK kembali ke klien yang terdiri dari nomor acak, katakanlah y diambil oleh server dan nomor x+1 di mana x adalah nomor yang dikirim oleh klien

ACK - Klien menambah jumlah y yang diterima dari server dan mengirimkan paket ACK kembali dengan jumlah y+1

Setelah jabat tangan tiga arah selesai, pembagian data antara klien dan server dapat dimulai. Perlu dicatat bahwa klien dapat mulai mengirimkan data aplikasi segera setelah mengirimkan paket ACK terakhir, tetapi server masih harus menunggu paket ACK diterima untuk memenuhi permintaan.

Apa Itu Front-end

Pengembang front-end adalah manusia profesional yang menggunakan HTML, CSS, dan JavaScript untuk merancang dan membangun sebuah elemen visual dan interaktif situs web.

Aplikasi yang berinteraksi langsung dengan pengguna dengan memastikan tampilan responsif, mudah diakses, dan menarik secara visual. Setiap fitur yang lihat dan gunakan di situs web (seperti tombol, menu, dan animasi) dibuat oleh pengembang front-end.



Apa peran Pengembang Frontend?

Meskipun ini bukan deskripsi pekerjaan pengembang front-end yang lengkap, berikut ini dapat dianggap sebagai pengantar yang baik untuk peran pengembang front-end: Anda akan bertanggung jawab untuk menciptakan antarmuka pengguna situs web agar terlihat bagus dan mudah digunakan, dengan fokus utama pada prinsip desain dan pengalaman pengguna. Anda akan bekerja sama dengan desainer, pengembang back-end, dan manajer proyek untuk memastikan produk akhir memenuhi kebutuhan klien dan memberikan pengalaman terbaik bagi pengguna akhir.

Bahasa apa yang digunakan untuk Pengembangan Frontend?

Bagian yang mudah tentang peran pengembangan frontend adalah tidak banyak pilihan untuk dipilih ketika menyangkut bahasa dan teknologi frontend (tidak seperti pengembangan backend).

Sebagai pengembang frontend, Anda akan bekerja dengan teknologi berikut:

HTML : Bahasa markah yang digunakan untuk membuat kerangka halaman. Semua informasi yang ingin Anda tampilkan di halaman web akan ditata melalui HTML.

CSS : Bahasa Cascading Style Sheet memungkinkan Anda menyesuaikan cara elemen HTML ditampilkan, meningkatkan visual halaman web Anda.

JavaScript : Ini adalah bahasa pemrograman de facto untuk pengembangan frontend, dan memungkinkan Anda menambahkan dinamisme ke situs web/aplikasi web Anda. Ada alternatif yang dikenal sebagai TypeScript, yang merupakan superset JavaScript dengan tipe kuat yang dapat Anda gunakan sebagai gantinya. Namun, dalam skenario tersebut, Anda harus menyiapkan transpiler untuk menerjemahkan kode Anda ke dalam JavaScript sebelum dapat menjalankannya di peramban.

Keterampilan apa yang dibutuhkan untuk pengembang Frontend?

Keterampilan utama yang dibutuhkan untuk menjadi pengembang frontend adalah HTML, CSS, dan JavaScript. Keterampilan lainnya juga penting, tetapi tanpa tiga keterampilan dasar tersebut, Anda tidak dapat menerapkan keterampilan lainnya.

Daftar lengkap keterampilan pengembang frontend yang harus Anda pertimbangkan jika Anda ingin meningkatkan permainan Anda adalah sebagai berikut:

  1. Memahami teknologi inti : HTML, CSS & JavaScript.
  2. Memahami aksesibilitas : Mengetahui bagaimana hal itu dapat memengaruhi pengalaman pengguna Anda.
  3. Sistem kontrol versi : Menguasai alat seperti Git.
  4. Desain responsif : Menerapkan desain yang beradaptasi dengan berbagai perangkat dan ukuran layar.
  5. Pengalaman pengguna (UX) : Memahami dasar-dasar prinsip UX.
  6. SEO : Mengetahui cara kerja optimasi mesin pencari dan bagaimana Anda dapat memanfaatkannya dalam kode Anda
  7. API RESTful : Memahami dasar-dasar API RESTful dan cara menggunakannya.
  8. Pengujian dan debugging : Menerapkan praktik pengujian dan debugging secara efektif.
  9. Alat dev : Kuasai alat pengembang browser untuk memeriksa, men-debug, dan mengoptimalkan kode.
  10. Kerangka kerja : Memiliki kerangka kerja frontend (seperti React atau Vue) dan memahami yang lain pada tingkat tinggi.
  11. Kinerja web Memahami optimasi kinerja web dan web vitals inti.
  12. TypeScript : Memahami cara kerja TypeScript dan kapan menggunakannya.

Menguasai keterampilan dasar ini akan mempersiapkan Anda menghadapi segala jenis pertanyaan wawancara pengembang front-end yang mungkin Anda hadapi di masa mendatang dan akan meningkatkan peran Anda saat ini.


 

DevOps

DevOps adalah pola pikir kultural dan kolaboratif yang menekankan komunikasi, kolaborasi, integrasi, dan otomatisasi antara tim pengembangan dan operasi untuk mencapai pengiriman perangkat lunak yang lebih cepat dan lebih andal.



DevOps bukanlah jabatan atau peran tertentu, melainkan serangkaian prinsip dan praktik yang dapat diterapkan di berbagai peran dalam pengembangan perangkat lunak dan operasi TI. Siapa pun yang terlibat dalam proses pengembangan dan pengiriman perangkat lunak dapat mengadopsi pola pikir DevOps dan menerapkan praktik DevOps dalam pekerjaan mereka, termasuk pengembang, penguji, insinyur operasi, manajer produk, dan lainnya.

Apa itu Insinyur DevOps?

Meskipun DevOps bukanlah jabatan atau peran spesifik, organisasi sering kali merekrut untuk posisi "Insinyur DevOps". Insinyur DevOps adalah insinyur perangkat lunak yang berspesialisasi dalam praktik dan alat terbaik yang memungkinkan pengiriman perangkat lunak berkelanjutan.

Insinyur DevOps (biasanya bagian dari tim DevOps yang lebih besar) bertanggung jawab untuk menjembatani kesenjangan antara tim pengembangan dan operasi, mereka bekerja sama erat dengan pengembang, penguji, dan staf operasi untuk mengawasi rilis kode dan menyediakan alat yang diperlukan untuk mengotomatiskan dan mempercepat waktu tim untuk memasarkan produk sambil mempertahankan kualitas hasil akhir.



Apa yang Dilakukan Insinyur DevOps?

Insinyur DevOps memainkan peran kunci dalam menyederhanakan siklus hidup pengembangan perangkat lunak dengan mendorong kolaborasi antara tim pengembang dan tim operasi. Dengan kata lain, dengan menerapkan pendekatan DevOps.

Pada akhirnya, para insinyur ini terus-menerus mencoba meningkatkan kecepatan, efisiensi, dan keandalan pengiriman perangkat lunak dengan mengotomatiskan tugas, menambahkan integrasi dan penerapan berkelanjutan (CI/CD) untuk menyederhanakan aktivitas promosi kode, menyederhanakan manajemen infrastruktur, dan yang paling tidak (tetapi jelas bukan yang terakhir) menyiapkan aturan pemantauan dan peringatan.

Mereka bekerja sama dengan para pengembang untuk memastikan kode dibangun, diuji, dan diterapkan secara efisien, sekaligus memelihara infrastruktur yang mendasarinya agar aplikasi tetap berjalan lancar. Hal ini sering kali mencakup konfigurasi lingkungan cloud, penerapan praktik terbaik keamanan, pengoptimalan alur penerapan, dan penyiapan alat observabilitas untuk memantau kinerja.

Pada akhirnya, seorang Insinyur DevOps membantu organisasi membangun dan memelihara sistem yang skalabel dan tangguh sambil mengurangi proses manual dan membantu meminimalkan waktu henti.



Bagaimana Anda menjadi seorang Insinyur DevOps?

Untuk menjadi seorang Insinyur DevOps, Anda harus memiliki keterampilan teknis di berbagai bidang seperti pengembangan, otomatisasi, kontainerisasi, cloud, pipeline CI/CD, dll. Meskipun menjadi ahli di semua bidang tersebut hampir tidak mungkin, yang terjadi adalah bahwa setiap insinyur DevOps memiliki spesialisasi di berbagai aspek budaya DevOps.

Beberapa contoh alat dan teknologi DevOps yang perlu dipelajari mungkin mencakup bahasa pemrograman seperti Python atau JavaScript untuk penulisan skrip, AWS, Ansible untuk manajemen konfigurasi, Terraform untuk mengelola infrastruktur Anda sebagai kode, Docker, Kubernetes, Jenkins, dan Git untuk kontrol sumber, serta alat pemantauan dan pencatatan.



Mulailah secara perlahan memperoleh pengalaman dengan mengerjakan proyek DevOps, mengembangkan pola pikir DevOps, memperoleh sertifikasi, dan melamar posisi Insinyur DevOps dengan menonjolkan keterampilan dan pengalaman Anda dalam resume Anda. Mulailah jalur karier Anda dalam rekayasa DevOps dengan mengerjakan beberapa proyek DevOps .
This entry was posted in

Full Stack

Pengembang Tumpukan Penuh (Full Stack Developer) adalah seseorang yang dapat bekerja di sisi front-end dan back-end aplikasi. Mereka menulis kode dan, seringkali, juga mengurus semua yang diperlukan untuk meluncurkan produk ke tahap produksi.

 

Pengembang tumpukan penuh (juga dikenal sebagai pengembang web tumpukan penuh) biasanya memiliki keterampilan yang dibutuhkan untuk menangani setiap bagian dari proses pengembangan web. Di sisi front-end, mereka akan fokus membangun antarmuka pengguna menggunakan teknologi seperti HTML, JavaScript , dan CSS (Cascading Style Sheets - biasanya dikombinasikan dengan beberapa kerangka kerja UI seperti React atau Vue). Untuk sisi back-end proyek-proyek ini, mereka akan mengodekan logika bisnis dan semua jenis akses data yang diperlukan yang melibatkan beberapa basis data SQL atau, dalam beberapa proyek, opsi noSQL. Sebagai bagian dari back-end, mungkin juga ada beberapa desain API yang terlibat, serta optimasi kinerja dan skalabilitas lainnya yang perlu dilakukan. 
 
Singkatnya, bisa dibilang pengembang tumpukan penuh (full stack developer) adalah "serba bisa" dalam pengembangan web. Meskipun mereka mungkin tidak selalu ahli dalam teknologi apa pun, mereka lebih dari sekadar mampu mengisi kekosongan dalam tim. 
Bahasa apa yang digunakan dalam Pengembangan Tumpukan Penuh?

 

Dalam pengembangan tumpukan penuh, bahasa yang digunakan dapat berkisar dari hanya 3 hingga banyak pilihan.

 

Untuk front-end, tidak banyak pilihan; Anda hanya bisa menggunakan HTML, CSS, dan JavaScript (dengan kebebasan memilih framework yang paling sesuai dengan preferensi Anda). Namun, di back-end, situasinya sangat berbeda. Tentu saja, Anda bisa memilih JavaScript, menjaga agar seluruh tumpukan teknologi tetap homogen, tetapi Anda juga memiliki opsi untuk menambahkan beberapa bahasa pemrograman jika Anda menggunakan arsitektur berbasis layanan mikro, menggunakan bahasa yang tepat untuk setiap layanan. Jika demikian halnya, beberapa bahasa pemrograman yang paling populer antara lain Python , Ruby, Java , PHP , atau C# .



Dan yang terpenting, Anda sering menggunakan sesuatu seperti SQL (Structured Query Language) untuk interaksi basis data Anda (kecuali jika Anda menggunakan basis data NoSQL).

Keterampilan apa yang saya perlukan untuk menjadi Pengembang Tumpukan Penuh?

Untuk menjadi pengembang tumpukan penuh (full stack developer), keahlian yang Anda butuhkan sangat beragam. Anda perlu memahami pengembangan perangkat lunak front-end dan back-end, termasuk beberapa kerangka kerja dan pustaka terpopuler.

Artinya, Anda harus tahu cara mengubah desain menjadi antarmuka pengguna yang baik mengikuti tren UX terkini. Di sisi back-end, Anda perlu memahami pemrograman sisi server, bekerja dengan basis data, mengelola API, dan memastikan semuanya terintegrasi sebagaimana mestinya. Dan Anda akan melakukan semua itu sebagai bagian dari proses pengembangan rutin Anda.

Di atas semua ini, keterampilan pengembang tumpukan penuh utama lainnya yang akan meningkatkan profil Anda adalah sistem kontrol versi (seperti Git yang merupakan standar industri saat ini) dan pemahaman API RESTful.

Tentu saja, kemampuan memecahkan masalah yang kuat, keterampilan debugging, dan kemauan untuk terus mempelajari teknologi baru juga penting untuk peran ini, seperti halnya pekerjaan pengembangan perangkat lunak apa pun.




Pada akhirnya, perpaduan keterampilan khusus ini memungkinkan pengembang untuk membangun aplikasi web berfitur lengkap dari awal hingga akhir.

Bagaimana cara menjadi Pengembang Tumpukan Penuh?

Untuk menjadi pengembang tumpukan penuh, Anda perlu mulai dengan mempelajari dasar-dasar HTML, CSS, dan JavaScript, mereka akan memberi Anda semua yang Anda butuhkan untuk menguasai pengembangan front-end.

Setelah siap, Anda bisa mempelajari bahasa pemrograman back-end seperti Python atau Java (atau bahkan JavaScript lagi melalui Node.js). Cobalah mulai dari yang kecil dan bangun back-end sederhana untuk situs web Anda. Sebaiknya gunakan framework full-stack, seperti NextJS atau Django; framework tersebut akan memudahkan Anda mengintegrasikan back-end ke dalam proyek Anda. Secara bertahap, mulailah mengintegrasikan manajemen basis data. Ini akan membuka pintu menuju aplikasi yang lebih kompleks. Ingatlah untuk memulai dengan proyek kecil untuk melatih kemampuan full-stack developer Anda dan secara bertahap kembangkan proyek yang lebih kompleks.

Sebagai rencana pembelajaran jangka panjang, membuat portofolio untuk menunjukkan kemajuan Anda bisa menjadi motivator yang hebat. Pertimbangkan untuk mengikuti peta jalan seperti peta jalan full-stack , dan teruslah belajar melalui kursus online atau bootcamp untuk meningkatkan perjalanan Anda menuju pengembangan full-stack.

Backend Developer

Pengembangan backend mengacu pada aspek sisi server dari pengembangan web, yang berfokus pada pembuatan dan pengelolaan logika server, basis data, dan API. Pengembangan ini melibatkan penanganan autentikasi, otorisasi, dan pemrosesan permintaan pengguna, biasanya menggunakan bahasa pengembangan backend seperti Python, Java, Ruby, PHP, JavaScript (Node.js), dan .NET.

Apa yang dilakukan Pengembang Backend?

Pengembang backend berfokus pada pembuatan dan pemeliharaan komponen sisi server aplikasi web. Tugas utama mereka adalah mengembangkan API sisi server, menangani operasi basis data, dan memastikan bahwa backend dapat mengelola volume lalu lintas tinggi secara efisien. Tanggung jawab utama meliputi mengintegrasikan layanan eksternal seperti gateway pembayaran dan layanan cloud, serta meningkatkan kinerja dan skalabilitas sistem. Peran ini krusial dalam memproses dan mengamankan data, serta menjadi tulang punggung yang mendukung pengembang frontend dalam memberikan pengalaman pengguna yang lancar.

 


Nama Domain


Nama domain adalah alamat web yang mudah dipahami (misalnya, google.com ) yang menggantikan alamat IP numerik. Terdiri dari domain tingkat kedua ("google") dan domain tingkat atas (".com"). Didaftarkan melalui registrar, penting untuk branding dan kehadiran online. DNS menerjemahkan nama menjadi alamat IP untuk aksesibilitas.


Internet

 Internet adalah jaringan global komputer yang saling terhubung menggunakan protokol TCP/IP, yang menghubungkan miliaran perangkat di seluruh dunia. Internet telah merevolusi komunikasi, perdagangan, pendidikan, dan hiburan. Internet memungkinkan penjelajahan web, streaming, dan beragam aplikasi, sekaligus menghadirkan tantangan privasi dan keamanan.



Segala hal yang perlu Anda ketahui tentang HTTP

HTTP adalah protokol yang wajib dipahami setiap pengembang web, karena protokol inilah yang menggerakkan seluruh web. Memahami HTTP tentu dapat membantu Anda mengembangkan aplikasi yang lebih baik.

Dalam artikel ini, saya akan membahas apa itu HTTP, bagaimana HTTP muncul, di mana HTTP berdiri saat ini, dan bagaimana HTTP ada.

 


Apa itu HTTP?

Pertama-tama, apa itu HTTP? HTTP adalah protokol komunikasi lapisan aplikasi berbasis TCP/IP yang menstandardisasi cara klien dan server berkomunikasi satu sama lain. Protokol ini mendefinisikan bagaimana konten diminta dan dikirimkan melalui internet. Yang saya maksud dengan protokol lapisan aplikasi adalah lapisan abstraksi yang menstandardisasi cara host (klien dan server) berkomunikasi. HTTP sendiri bergantung pada TCP/IP untuk menerima permintaan dan respons antara klien dan server. Secara default, port TCP 80 digunakan, tetapi port lain juga dapat digunakan. Di sisi lain, HTTPS menggunakan port 443.

 

HTTP/0.9 - Satu Baris (1991)

Versi HTTP pertama yang terdokumentasi adalah HTTP/0.9 yang diperkenalkan pada tahun 1991. Protokol ini merupakan protokol paling sederhana yang pernah ada; hanya memiliki satu metode bernama GET. Jika klien ingin mengakses halaman web tertentu di server, klien akan membuat permintaan sederhana seperti di bawah ini.