Cosa devo sapere sui server in un ruolo di sviluppo Web? [chiuso]


12

So che può sembrare un po 'vago, quindi cercherò di spiegare un po' di più ...

Dopo essere stato uno sviluppatore autonomo per molti anni, ora sono alla ricerca di un ruolo di sviluppatore web commerciale. La mia unica esperienza con server e hosting è caricare tramite FTP e giocare un po 'con CPanel / WHM. Il ruolo che sto assumendo sono ruoli di sviluppo Web PHP, MySQL, HTML, CSS, ma nelle recenti interviste mi sono state poste domande sulla configurazione delle cose sul server, che non avevo idea di cosa si stesse dicendo ... che non era l'ideale!

Senza sapere più di me, è difficile spiegare esattamente cosa sto cercando di imparare, ma fondamentalmente sono solo gli elementi del server che dovrei sapere come sviluppatore web? Se sei uno sviluppatore web, hai a che fare con il server oltre al caricamento dei file e, in caso affermativo, cosa? Sono cose come Subversion (SVN) e sistemi di controllo versione spesso impostati dal team di sviluppo web, potrebbe essere quello di cui stavano parlando?



3
Penso che questo sia più specifico sui server :)
Michael Durrant,

2
Odio dirtelo, ma se non riesci a configurare un server web non sei uno sviluppatore web molto prezioso e non è qualcosa che puoi imparare rapidamente in un libro. Piuttosto che fare un lavoro a metà culo nell'apprendimento dei componenti del server da un libro. Stai meglio per perfezionare le tue abilità PHP e fare domanda come programmatore PHP.
Reactgular,

@MathewFoscarini perché non sono bravo a farlo, dovrei evitarlo e perfezionare solo quello che so? Questo consiglio non farebbe fermare il mondo? not a very valuable web developerè ciò che sto cercando di superare, quindi sono felice di conoscerlo correttamente, non so proprio come andare al meglio su questo apprendimento e su quali aree focalizzarci prima.
Giovanni,

@john L'hai chiesto nel contesto di essere assunto come sviluppatore web. Qualcosa per cui non sei qualificato. Se è quello che vuoi essere assunto come, allora sicuramente provaci ma non aspettarti una soluzione a breve termine per rispondere alle domande in un'intervista. Mi aspetto che il datore di lavoro stia tentando di eliminare i candidati che non hanno esperienza di carriera pratica lavorando sui server. La mia impressione dalla tua domanda è stata che stai cercando di ottenere un lavoro facendo quello che non potresti fare come libero professionista. Potresti provare a trovare un cliente disposto a pagare mentre apprendi queste abilità del server.
Reactgular,

Risposte:


10

Questa è una serie di domande, ma ho il sospetto che molte persone debbano affrontare, in particolare quando iniziano a progredire in una carriera iniziata con un forte focus sul front-end.

Dici che stai andando per un ruolo che include lo sviluppo di PHP e MySQL. Queste sono cose che devono essere eseguite sul server. Essere in grado di esprimere giudizi tecnici validi come sviluppatore richiede di comprendere come funzionano queste cose sul server e come interagiscono con il front-end Web. Quindi, è chiaramente necessario sviluppare una comprensione del server.

Invece di cercare di capire esattamente l'esatta conoscenza di cui potresti aver bisogno sul server, consiglierei di immergerti e costruire qualcosa incluso l'installazione di tutto il software lato server da solo. Un ottimo modo per bagnare i piedi è installare Linux sul tuo computer. Puoi usare qualcosa come VirtualBox per farlo funzionare insieme al tuo attuale sistema operativo. Installa MySQL, installa e configura il server per PHP e cerca di far funzionare tutto insieme. La cosa bella è che in questi giorni un laptop moderatamente ben attrezzato può eseguire tutto questo ed essere il "server".Questo potrebbe essere difficile all'inizio, in particolare se non si ha esperienza nell'uso di Linux e della riga di comando. Come sviluppatore, dovresti almeno sapere abbastanza per essere in grado di superare questo esercizio e ti darà un balzo in avanti nel capire come approfondire le tue conoscenze.

Esistono tre aree in cui probabilmente dovrai aggiornarti:

  1. Le basi del sistema operativo Linux. Forse iniziare con una distribuzione facile da installare come Ubuntu.
  2. Impostazione di un server Web e PHP. L'installazione di Apache è un buon punto di partenza. Ci sono altre alternative, ma è qui che inizia la maggior parte delle persone.
  3. Imparare le basi dell'installazione e dell'esecuzione di MySQL. Per lo meno, come sviluppatore, probabilmente dovrai essere in grado di scrivere DDL per creare tabelle e altre strutture nel database e dovrai sicuramente essere in grado di interrogare il database sul server per esplorare i dati e assicurarti quali l'applicazione sta sputando corrisponde a ciò che è nel database.

Se dovessi andare con Ubuntu, potresti seguire le istruzioni di base qui per metterti in funzione. Nota, prima di iniziare l'installazione e giocare con i server web / i componenti del database dovrai fare un po 'di accelerazione delle basi di Linux.

In termini di come gli sviluppatori devono interagire con il server, oltre a caricare i file, penso che questo varia molto da un'organizzazione all'altra.

  1. Gli sviluppatori hanno spesso a che fare con l'amministrazione dell'ambiente di sviluppo. A volte, sono gli sviluppatori che stanno configurando il sistema di controllo delle revisioni (ad esempio SVN) e il processo di distribuzione (spostamento del codice negli ambienti).
  2. A tuo avviso, per lo meno gli sviluppatori dovranno utilizzare il sistema di controllo di revisione presente sul server.
  3. Dovrai anche fare cose come guardare i log su un server per vedere quali messaggi vengono generati per aiutare a diagnosticare e risolvere i problemi.
  4. Potrebbe essere necessario collaborare con un team di infrastrutture per determinare cose come la configurazione di rete o la configurazione di archiviazione del server. Spesso, i problemi dell'applicazione sono una combinazione della configurazione e del codice.

Il punto è che non esiste una sola risposta per sapere esattamente come sarà necessario toccare il server, ma nel corso della tua carriera, andrà sicuramente oltre il semplice caricamento di file tramite FTP. Iniziare imparando le basi ora aiuterà.


Ottima risposta, grazie! Quindi, quando imposto "Mamp" per il lavoro locale, è lo stesso ma senza accesso al mondo esterno? Ho installato alcuni sistemi operativi Linux e conosco un po 'di roba da riga di comando ma nulla che ricorderei facilmente. La mia conoscenza dei server è inesistente, ma penso sempre che siano accessibili solo dalla riga di comando e non come un sistema operativo intuitivo, è così?
Giovanni,

2
È meglio essere a proprio agio usando la riga di comando. La maggior parte dei server "reali" con cui ti occuperai saranno macchine remote e non avrai la GUI installata.
GrandmasterB,

2
Come ha scritto @GrandmasterB, è utile mettersi in contatto con la riga di comando. Secondo me, Linux è una buona piattaforma di apprendimento perché ti costringe ad avvicinarti "al metal" nell'apprendere ciò che il sistema operativo sta facendo oltre ciò che vedi sullo schermo. Guarda il file httpd.conf, scopri cosa sta facendo il web server e come si integra il modulo PHP. Ottieni una conoscenza di base della piattaforma e ti renderà uno sviluppatore migliore.
DemetriKots,

Sono passato da server Linux a Windows alcuni anni fa e non ho mai guardato indietro. Linux è eccezionale e potente ma devi scegliere gli strumenti che meglio si adattano ai requisiti del lavoro.
Reactgular,

2

Il mio primo consiglio è di non limitarti esclusivamente a nessun ruolo. È bello essere uno specialista e avere una profonda conoscenza di un particolare set di abilità (PHP, ad esempio). Tuttavia, è altrettanto importante avere una vasta conoscenza che si estende su tutto il resto del dominio.

Nella mia esperienza, la maggior parte dei team non sta cercando di assumere qualcuno che abbia le conoscenze per riscrivere le funzionalità di base di PHP, ma piuttosto qualcuno che sia in grado di gestire qualsiasi problema che viene loro lanciato (sebbene avere quel livello di conoscenza certamente non farebbe male). O almeno qualcuno che possa aiutare a risolvere eventuali problemi che la squadra incontra. Ad esempio, immagina una situazione in cui l'applicazione non funziona e i clienti sono interessati. Puoi alzare le mani e dire "Non ho idea di cosa fare ..." oppure puoi SSH nel server, avviare la scansione dei registri, notare che lo spazio su disco di un particolare filesystem è pieno e procedere alla pulizia. Questo è un piccolo esempio ma penso che il punto sia chiaro. Con questa conoscenza di base, come sviluppatore, potresti scrivere uno script che monitora quel particolare filesystem e lo ripulisce quando raggiunge una certa soglia. Ora sei diventato molto più prezioso per il tuo manager.

Un'altra cosa che ho imparato durante la mia carriera, è che le cose si muovono velocemente e se non stai al passo rimarrai indietro. Più conosci il tuo intero ambiente (compresi gli aspetti aziendali), meglio sei. Questo non vuol dire che devi essere un esperto in tutto ciò che fai, ma almeno avere le conoscenze per non essere etichettato come privo di conoscenza. Più sei familiare, più sei adattabile e più preziosa è una risorsa per la tua azienda.

Per rispondere in modo specifico alle tue domande ...

  • Quali elementi del server dovrei sapere come sviluppatore?

Acquisire familiarità con l'intero stack dell'applicazione. Conoscere quali server Web, database, meccanismi di memorizzazione nella cache, ecc. Vengono utilizzati. E anche quali versioni. Avere abbastanza familiarità da poter ricreare l'ambiente sul proprio server. Che, di per sé, è di vitale importanza. Dovresti cercare di avere più o meno gli stessi ambienti nello sviluppo e nella produzione, in quanto riduce le sorprese ( http://12factor.net/dev-prod-parity ).

  • Come sviluppatore che rapporti hai con il server?

Questo dipende davvero dalla squadra. Nel mio caso particolare, gli sviluppatori svolgono un ruolo enorme nella messa in scena degli ambienti. Conosciamo meglio il funzionamento interno dell'applicazione e quindi siamo nella posizione migliore per determinare quali tecnologie server sono in atto per eseguirlo. Immagino che non tutte le squadre abbiano un approccio così pratico, ma avere abbastanza familiarità per essere in grado di coinvolgerti nelle discussioni è un grande vantaggio. In particolare, per quanto riguarda il controllo della versione, tu come sviluppatore sei fortemente influenzato dalla tecnologia scelta (Git, Subversion, Mercurial, ecc.), E quindi dovresti sforzarti di coinvolgerti nel processo decisionale.

E ora?

Per quanto riguarda il mio suggerimento su come affrontare al meglio l'apprendimento di tutto ciò? Muovi i tuoi piedi . Non preoccuparti di provare a leggere tutto ciò che puoi sull'argomento, la maggior parte probabilmente uscirà dal tuo cervello quando avrai finito. Inizia invece a sviluppare qualcosa da zero. Inizia con Vagrant ; ti consentirà di creare e gestire facilmente una macchina virtuale che puoi utilizzare come nuovo parco giochi. Quindi, installare un server Web e un database e iniziare a creare. Se hai un'idea per un'app, perfetta, provaci ... in caso contrario, trova un tutorial o prova a ricreare un'app esistente. Il punto è solo familiarizzare con l'intero processo. Inoltre, come sviluppatore di PHP, assicurati di controllare PHP: The Right Way... contiene davvero molte informazioni eccellenti. E, soprattutto, non stressarti. Immagino che tu abbia seguito il percorso di uno sviluppatore perché è qualcosa che ti piace e di cui sei appassionato ... non perdere di vista questo!


1

Focus su Cosa devi sapere sui server per essere uno sviluppatore web? ...

In realtà sorprendentemente piccolo. Le tue principali aree di conoscenza dovrebbero essere programmazione, html, php, ecc.

Quello che devi sapere è come eseguire le cose localmente e quando lo fai stai usando la tua scatola come 'server'. Quindi, quando si esegue localmente, si utilizza un browser Web per visualizzare le pagine, proprio come con qualsiasi sito Internet ... tranne il tuo sarà http://localhostohttp://127.0.0.1

Per quanto riguarda la configurazione di cgi, http, ecc. Non mi aspetto che tu debba saperlo. Puoi sempre consultare qualsiasi libro generale sulla configurazione di un server web per il sistema operativo in cui lavori e sarebbe sufficiente copertura per conoscere i termini generali.

Per una visione più ampia, consiglio di entrare in Linux e imparare come installare e configurare macchine come i server web. Ma solo se in realtà hai un interesse per le cose. Non solo per stupire nelle interviste.

Infine, ti consiglio di prendere in considerazione l'idea di prendere appunti durante le interviste su aree di cui non conosci abbastanza. Sarebbe utile se la tua domanda fosse più specifica su quali termini, ecc. Non sapevi.


Grazie. Vorrei imparare comunque se il tempo lo permette. Un libro di tipo "Linux for Dummies" potrebbe aiutarmi qui. A breve trasferirò l'host, il cloud di Amazon AWS ospita qualcosa che mi gioverebbe con un po 'di lavoro o è completamente diverso?
Giovanni,

1
Non userei un libro di manichini. Molti di questi potrebbero non essere rilevanti. Proverei a
Michael Durrant,

sì, esegui linux come macchina per lo sviluppo e imposta un server web su di esso. Abituati a giocarci e configurarlo. Imparerai abbastanza in questo modo. Questo è fondamentalmente come impari sul lavoro. La metà delle cose è sotto il controllo di amministratori di sistema, il che può essere buono per cominciare, ma mentre avanzi, preferirai avere più controllo della configurazione da solo.
wobbily_col,

0

Devi sapere di seguito le cose per completare il ciclo di sviluppo web.

1) IDE (Netbeans ed Eclipse ecc.)

2) Qualsiasi linguaggio di programmazione per la codifica. (PHP, java, ecc.)

3) Tecnologia frontale per la progettazione di pagine (HTML, CSS ecc.)

4) Database di backup per archiviare e recuperare i dati. (MySQL ecc.)

3) Sistema di controllo versione per il controllo e il recupero del repository di moduli di codice.

4) strumento di compilazione per compilare il codice con file dipendenti. (Formica, Maven)

6) Web server per distribuire ed eseguire il codice.

7) È necessario conoscere il processo di distribuzione di base sui server per eseguire e testare i componenti Web ed ejb. (Tomcat, server Web-Logic)


0

Oltre alla risposta DemetriKots, aggiungerei anche soluzioni per l'implementazione automatizzata e l'integrazione continua. La configurazione iniziale del server è solo un passo e la distribuzione su FTP è dolorosa e soggetta a errori, senza una soluzione adeguata per il rollback di distribuzioni errate.

  • Hudson - Server di integrazione continua
  • Phing - strumento di compilazione automatizzato, specifico per PHP, basato su Ant
  • Ant - strumento di costruzione automatizzato
  • Capistrano : crea script di distribuzione per automatizzare e semplificare la distribuzione della tua applicazione web.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.