Apa yang Perlu Saya Ketahui Tentang Server Dalam Peran Pengembangan Web? [Tutup]

12

Saya tahu itu mungkin terdengar agak kabur, jadi saya akan mencoba dan menjelaskan sedikit lebih jauh ...

Setelah menjadi wiraswasta pengembang selama bertahun-tahun saya sekarang mencari peran pengembang web komersial. Satu-satunya pengalaman saya dengan server dan hosting adalah mengunggah melalui FTP dan bermain-main dengan CPanel / WHM sedikit. Peran yang akan saya tuju adalah pengembangan web PHP, MySQL, HTML, peran tipe CSS, tetapi dalam wawancara baru-baru ini saya ditanyai tentang pengaturan berbagai hal di server, yang saya tidak tahu apa yang dikatakan ... yang tidak ideal!

Tanpa mengetahui lebih dari yang saya lakukan, sulit untuk menjelaskan apa sebenarnya yang ingin saya pelajari, tetapi pada dasarnya hanya elemen server yang harus saya ketahui sebagai pengembang web? Jika Anda seorang pengembang web, apakah Anda berurusan dengan server selain mengunggah file, dan jika demikian, apa? Apakah hal-hal seperti Subversion (SVN) dan sistem kontrol versi sering dibuat oleh tim pengembangan web, mungkinkah itu yang mereka bicarakan?

john
sumber
3
Saya pikir yang satu ini lebih spesifik tentang server :)
Michael Durrant
2
Saya benci untuk membocorkannya kepada Anda, tetapi jika Anda tidak dapat mengkonfigurasi server web Anda bukan pengembang web yang sangat berharga dan itu bukan sesuatu yang bisa Anda pelajari dengan cepat dalam sebuah buku. Daripada melakukan pekerjaan setengah keledai di komponen server belajar dari buku. Anda lebih baik menyempurnakan keterampilan PHP Anda dan melamar sebagai programmer PHP.
Reactgular
@MathewFoscarini karena saya tidak pandai, saya harus menghindarinya dan hanya menyempurnakan apa yang saya tahu? Bukankah nasihat ini akan membuat dunia terhenti? not a very valuable web developeradalah apa yang saya coba atasi, jadi saya senang mempelajarinya dengan benar, saya hanya tidak tahu bagaimana cara terbaik untuk belajar ini, dan bidang mana yang menjadi fokus pertama.
john
@ John Anda memang bertanya dalam konteks dipekerjakan sebagai pengembang web. Sesuatu yang tidak memenuhi syarat untuk Anda. Jika itu yang ingin Anda pekerjakan, maka tentu saja usahakan untuk itu tetapi jangan mengharapkan solusi jangka pendek untuk menjawab pertanyaan dalam wawancara. Saya berharap bahwa majikan berusaha untuk menyingkirkan kandidat yang tidak memiliki pengalaman karir praktis bekerja di server. Kesan saya dari pertanyaan Anda adalah Anda mencoba mendapatkan pekerjaan dengan melakukan apa yang tidak bisa Anda lakukan sebagai pekerja lepas. Anda dapat mencoba menemukan klien yang bersedia membayar saat Anda mempelajari keterampilan server ini.
Reactgular

Jawaban:

10

Ini adalah serangkaian pertanyaan besar, tetapi saya curiga satu hal yang perlu diatasi oleh banyak orang, terutama ketika mereka mulai maju dalam karier yang dimulai dengan fokus front-end yang berat.

Anda menyebutkan bahwa Anda akan pergi untuk peran yang mencakup pengembangan PHP dan MySQL. Ini adalah hal-hal yang perlu dijalankan di server. Mampu membuat penilaian teknis yang baik sebagai pengembang mengharuskan Anda memperoleh pemahaman tentang bagaimana hal-hal ini bekerja di server dan bagaimana mereka berinteraksi dengan web front-end. Jadi, Anda jelas perlu mengembangkan pemahaman tentang server.

Daripada mencoba mencari tahu di depan tubuh yang tepat yang mungkin Anda butuhkan tentang server, saya akan merekomendasikan menyelam dan membangun sesuatu termasuk menginstal semua perangkat lunak sisi server sendiri. Cara yang bagus untuk membuat kaki Anda basah adalah dengan menginstal Linux di komputer Anda. Anda dapat menggunakan sesuatu seperti VirtualBox untuk menjalankannya di samping OS Anda saat ini. Instal MySQL, instal, dan atur server untuk PHP dan coba semuanya bekerja sama. Yang hebat adalah, hari-hari ini, laptop yang cukup lengkap dapat menjalankan semua ini dan menjadi "server".Ini bisa jadi sulit di awal, terutama jika Anda tidak memiliki pengalaman menggunakan Linux dan baris perintah. Sebagai seorang pengembang, Anda setidaknya harus cukup tahu untuk dapat melewati latihan ini dan itu akan memberi Anda lompatan awal dalam mencari tahu bagaimana memajukan pengetahuan Anda.

Ada tiga area di mana Anda mungkin perlu meningkatkan kecepatan:

  1. Dasar-dasar sistem operasi Linux. Mungkin mulai dengan distribusi instalasi yang mudah seperti Ubuntu.
  2. Menyiapkan server web dan PHP. Menginstal Apache adalah tempat yang baik untuk memulai. Ada alternatif lain, tetapi di sinilah kebanyakan orang memulai.
  3. Mempelajari dasar-dasar menginstal dan menjalankan MySQL. Paling tidak, sebagai pengembang, Anda mungkin harus dapat menulis DDL untuk membuat tabel dan struktur lain dalam database dan Anda pasti harus dapat melakukan query database pada server untuk mengeksplorasi data dan memastikan apa yang Anda aplikasi memuntahkan cocok dengan apa yang ada di database.

Jika Anda ingin menggunakan Ubuntu, Anda bisa mengikuti instruksi dasar di sini untuk mengaktifkan dan menjalankan diri Anda. Catatan, Anda harus melakukan sedikit peningkatan pada dasar-dasar Linux sebelum mulai menginstal dan bermain dengan komponen server web / database.

Dalam hal bagaimana pengembang perlu berinteraksi dengan server, di luar mengunggah file, saya pikir ini sangat bervariasi dari organisasi ke organisasi.

  1. Para pengembang sering berurusan dengan administrasi setidaknya lingkungan pengembangan. Terkadang, pengembang yang menyiapkan sistem kontrol revisi (misalnya SVN) dan proses penerapan (memindahkan kode melintasi lingkungan).
  2. Untuk maksud Anda, paling tidak pengembang perlu menggunakan sistem kontrol revisi yang hidup di server.
  3. Anda juga perlu melakukan hal-hal seperti melihat log di server untuk melihat pesan apa yang dihasilkan untuk membantu mendiagnosis dan menyelesaikan masalah.
  4. Anda mungkin perlu bekerja dengan tim infrastruktur untuk menentukan hal-hal seperti konfigurasi jaringan atau konfigurasi penyimpanan server. Seringkali, masalah aplikasi adalah kombinasi dari konfigurasi dan kode.

Intinya adalah bahwa tidak ada jawaban tunggal untuk bagaimana tepatnya Anda perlu menyentuh server, tetapi selama karir Anda, itu pasti akan melampaui hanya mengunggah file melalui sesuatu seperti FTP. Memulai dengan mempelajari dasar-dasarnya sekarang akan membantu.

DemetriKots
sumber
Jawaban yang bagus, terima kasih! Jadi ketika saya menyiapkan 'Mamp' untuk pekerjaan lokal, apakah itu sama tetapi tanpa akses ke dunia luar? Saya telah menginstal beberapa OS Linux dan tahu sedikit hal-hal command line tapi tidak ada yang saya ingat dengan mudah. Pengetahuan saya tentang server tidak ada, tetapi saya selalu menganggap mereka hanya diakses oleh baris perintah, dan tidak seperti OS yang ramah pengguna, apakah itu masalahnya?
john
2
Yang terbaik adalah merasa nyaman menggunakan baris perintah. Sebagian besar server web 'nyata' yang akan Anda tangani adalah mesin jarak jauh, dan tidak akan menginstal GUI.
GrandmasterB
2
Seperti yang ditulis @GrandmasterB, sangat berguna untuk mendapatkan langsung dengan baris perintah. Menurut saya, Linux adalah platform pembelajaran yang baik karena Linux memaksa Anda untuk "dekat dengan logam" dalam mempelajari apa yang dilakukan OS di luar apa yang Anda lihat di layar. Lihatlah file httpd.conf, pahami apa yang sebenarnya dilakukan server web dan bagaimana modul PHP terintegrasi dengannya. Dapatkan pemahaman mendasar tentang platform dan itu akan membuat Anda menjadi pengembang yang lebih baik.
DemetriKots
Saya beralih dari linux ke server Windows beberapa tahun yang lalu, dan tidak pernah melihat ke belakang. Linux hebat dan kuat tetapi Anda harus menggunakan alat yang paling sesuai dengan persyaratan pekerjaan.
Reactgular
2

Saran pertama saya adalah untuk tidak membatasi diri Anda hanya untuk satu peran saja. Sangat bagus untuk menjadi spesialis dan memiliki pengetahuan yang mendalam dalam keahlian tertentu (PHP, misalnya). Namun, sama pentingnya untuk memiliki pengetahuan luas yang mencakup seluruh domain Anda.

Dalam pengalaman saya sebagian besar tim tidak mencari untuk mempekerjakan seseorang yang memiliki pengetahuan untuk menulis ulang fungsionalitas inti dari PHP, tetapi seseorang yang dapat menangani masalah yang dilemparkan kepada mereka (meskipun memiliki tingkat pengetahuan itu tentu tidak akan merugikan). Atau setidaknya seseorang yang dapat membantu menyelesaikan masalah yang dihadapi tim. Misalnya, bayangkan situasi di mana aplikasi Anda turun dan pelanggan terpengaruh. Anda dapat mengangkat tangan dan berkata "Saya tidak tahu harus berbuat apa ..." atau Anda dapat SSH ke server, mulai memindai log, perhatikan bahwa ruang disk dari sistem file tertentu sudah penuh dan lanjutkan untuk membersihkannya. Ini adalah contoh kecil tapi saya pikir intinya jelas. Dengan pengetahuan dasar itu, sebagai pengembang, Anda bisa menulis skrip yang memantau sistem file tertentu dan membersihkannya setelah mencapai batas tertentu. Anda sekarang menjadi jauh lebih berharga bagi manajer Anda.

Hal lain yang saya pelajari selama karier saya, adalah bahwa segala sesuatu bergerak cepat, dan jika Anda tidak mengikuti Anda akan tertinggal. Semakin banyak yang Anda ketahui tentang seluruh lingkungan Anda (termasuk aspek bisnis), semakin baik Anda. Itu tidak berarti Anda harus menjadi ahli dalam semua hal yang Anda lakukan, tetapi setidaknya memiliki pengetahuan untuk tidak dicap sebagai orang yang tidak mengerti. Semakin akrab Anda, semakin mudah beradaptasi Anda, dan semakin berharga aset Anda bagi perusahaan Anda.

Untuk secara khusus menjawab pertanyaan Anda ...

  • Elemen server apa yang harus saya ketahui sebagai pengembang?

Terbiasa dengan seluruh tumpukan aplikasi. Ketahui apa server web, database, mekanisme caching, dll. Yang digunakan. Dan versi mana juga. Miliki cukup keakraban sehingga Anda dapat menciptakan kembali lingkungan di server Anda sendiri. Yang, dalam dan dari dirinya sendiri, sangat penting. Anda harus berusaha untuk lebih atau kurang memiliki lingkungan yang sama dalam pengembangan dan produksi, karena hal itu mengurangi kejutan ( http://12factor.net/dev-prod-parity ).

  • Sebagai pengembang, transaksi apa yang Anda miliki dengan server?

Ini sangat tergantung pada tim. Dalam kasus khusus saya, para pengembang memainkan peran besar dalam menentukan lingkungan. Kami adalah yang paling akrab dengan cara kerja aplikasi dan jadi berada di posisi terbaik untuk menentukan teknologi server apa yang ada untuk menjalankannya. Saya membayangkan tidak semua tim memiliki pendekatan langsung seperti itu, tetapi memiliki cukup keakraban untuk dapat melibatkan diri dalam diskusi adalah keuntungan besar. Khususnya, dalam hal kontrol versi, Anda sebagai pengembang sangat dipengaruhi oleh teknologi yang dipilih (Git, Subversion, Mercurial, dll.), Dan karenanya harus berusaha untuk melibatkan diri Anda dalam proses pengambilan keputusan.

Jadi sekarang apa?

Adapun saran saya tentang cara terbaik untuk mempelajari semua ini? Gerakkan kakimu . Jangan khawatir tentang mencoba membaca semua yang Anda bisa tentang subjek, sebagian besar mungkin akan bocor keluar dari otak Anda pada saat Anda selesai. Alih-alih, mulailah mengembangkan sesuatu dari bawah ke atas. Mulailah dengan Vagrant ; itu akan memungkinkan Anda untuk dengan mudah membuat dan mengelola mesin virtual yang dapat Anda gunakan sebagai taman bermain baru Anda. Kemudian, instal server web dan database dan mulai membuat. Jika Anda memiliki ide untuk suatu aplikasi, sempurna, lakukanlah ... jika tidak, temukan tutorial atau coba buat kembali aplikasi yang sudah ada. Intinya adalah untuk menjadi terbiasa dengan seluruh proses. Juga, sebagai pengembang PHP, pastikan untuk memeriksa PHP: The Right Way... itu benar-benar mengandung banyak info bagus. Dan yang paling penting, jangan stres sendiri. Saya membayangkan Anda mengikuti jalur pengembang karena itu adalah sesuatu yang Anda nikmati dan bersemangat tentang ... jangan lupa!

JC Yamokoski
sumber
1

Berfokus pada Apa yang perlu Anda ketahui tentang server untuk menjadi pengembang web? ...

Sebenarnya sedikit mengejutkan. Bidang pengetahuan utama Anda harus pemrograman, html, php, dll.

Yang perlu Anda ketahui adalah bagaimana menjalankan sesuatu secara lokal dan ketika Anda melakukan ini, Anda menggunakan kotak Anda sebagai 'server'. Jadi ketika menjalankan secara lokal Anda menggunakan browser web untuk melihat halaman, sama seperti situs internet mana pun ... kecuali Anda akan http://localhostatauhttp://127.0.0.1

Sedangkan untuk mengkonfigurasi cgi, http, dll. Saya tidak berharap Anda perlu tahu itu. Anda selalu dapat bekerja melalui buku umum tentang pengaturan server web untuk OS tempat Anda bekerja dan itu akan menjadi cakupan yang cukup untuk mengetahui ketentuan umum.

Untuk gambaran yang lebih besar, saya sarankan masuk ke Linux dan belajar cara mengatur dan mengkonfigurasi mesin seperti server web. Tetapi hanya jika Anda benar-benar tertarik pada barang-barang itu. Bukan hanya untuk mengesankan dalam wawancara.

Akhirnya saya akan merekomendasikan Anda mempertimbangkan membuat catatan selama wawancara tentang bidang-bidang yang Anda tidak cukup tahu. Ini akan membantu jika pertanyaan Anda lebih spesifik tentang istilah mana, dll. Anda tidak tahu.

Michael Durrant
sumber
Terima kasih. Saya tetap ingin belajar jika waktu memungkinkan. Apakah buku jenis 'linux for dummies' membantu saya di sini. Saya akan pindah host sebentar lagi, apakah Amazon AWS cloud hosting sesuatu yang akan menguntungkan saya dengan sedikit kerja, atau apakah itu sama sekali berbeda?
john
1
Saya tidak akan menggunakan buku boneka. Banyak yang mungkin tidak relevan. Saya akan mencoba membaca sekilas sesuatu seperti Mengelola Server Web, misalnya cengagebrain.com/shop/en/US/storefront/…
Michael Durrant
ya, jalankan linux sebagai mesin devlopment Anda, dan atur server web di atasnya. Biasakan bermain dengannya dan mengonfigurasinya. Anda akan cukup belajar dengan cara itu. Thats dasarnya bagaimana Anda belajar di tempat kerja. Setengah dari barang-barang berada di bawah kendali sysadmin, yang mungkin baik untuk memulainya, tetapi saat Anda maju, Anda akan lebih memilih untuk diberikan lebih banyak conrtol pengaturan sendiri.
wobbily_col
0

Anda perlu tahu hal-hal di bawah ini untuk menyelesaikan siklus pengembangan web.

1) IDE (Netbeans dan Eclipse dll.)

2) Bahasa pemrograman apa pun untuk pengkodean. (PHP, java, dll.)

3) Teknologi depan untuk mendesain halaman (HTML, CSS dll.)

4) Database yang didukung untuk menyimpan dan mengambil data. (MySQL dll)

3) Versi mengendalikan sistem untuk memeriksa dan mengambil repositori bentuk kode Anda.

4) alat membangun untuk mengkompilasi kode Anda dengan file dependen. (Semut, Maven)

6) Server web untuk menyebarkan dan menjalankan kode Anda.

7) Perlu mengetahui proses penyebaran dasar pada server untuk menjalankan dan menguji komponen web dan ejb Anda. (Tomcat, server Web-Logic)

Ratnesh Dubey
sumber
0

Selain jawaban DemetriKots, saya juga menambahkan mencari solusi untuk penerapan otomatis dan integrasi berkelanjutan. Menyiapkan server pada awalnya hanya satu langkah, dan menyebarkan melalui FTP itu menyakitkan dan rentan kesalahan, tanpa solusi yang tepat untuk memutar kembali penyebaran yang buruk.

  • Hudson - Server integrasi berkelanjutan
  • Phing - alat bangun otomatis, khusus untuk PHP, berdasarkan Ant
  • Alat pembuatan semut - otomatis
  • Capistrano - buat skrip penempatan untuk mengotomatiskan dan mempermudah penerapan aplikasi web Anda.
Kikimac
sumber