Goedemiddag,
Vanwege de snelle groei van onze organisatie en in dit geval de performance problemen van de werk server die hierbij komen kijken was ik benieuwd naar ervaringen, meningen en advies van andere Tweakers omtrent het inrichten van een ''schaalbare'' server / workflow setup voor onze organisatie.
Achtergrond bedrijf
Het betreft hier een internet bureau met een zware nadruk op technische realisatie van web & mobile projecten. De werkzaamheden betreffen de ontwikkeling van websites, webshops maar ook veel integraties tussen systemen of stand alone platformen. Alle web gebaseerde zaken worden op basis van PHP / ReactJS / NodeJS e.d. ontwikkeld. Mobile development vind plaats in de native talen, Java en Objective-C / SWIFT.
We zijn op dit moment met zo'n 15 mensen op één locatie en verwachten dat dit de komende periode zal doorgroeien naar 20.
Huidige situatie
Op dit moment werkt iedereen vanaf zijn eigen Mac device ( MacBook pro / iMac / Mac Mini ), waarbij er via SMB een mount word gemaakt van de centrale server waar alle code staat maar ook alle server gerelateerde zaken draaien ( PHP, MySQL e.d. )
Als er meerdere mensen aan één project werken zal er voor iedereen een eigen ''folder/map'' zijn met daarin het volledige project eventueel gekoppeld aan een centrale MySQL database. Via GIT worden deze individuele omgevingen vervolgens ge-merged naar één centrale omgeving voor testing / al dan niet automated.
De Mac's hebben dus in verhouding relatief weinig te doen, alle daadwerkelijke processingen vind plaats op de server. Dit hebben we destijds op deze manier ingericht omdat we alle dev omgevingen altijd benaderbaar wilden hebben ( intern / extern is te configureren ). Daarnaast juist omdat we met PHP werken zijn er veel variabele die invloed hebben op het systeem dus als iets online gaat moeten deze omgevingen vrijwel identiek zijn. En als laatste, deze server word iedere nacht gebackedupt naar een lokale NAS en vanaf daar naar een cloud omgeving. Zo zijn we zeker dat we van iedereen zijn / haar werk altijd backups maken.
Er draait één router die alles aanstuurt en een drietal managed switches. Networking is alles 1Gbit en dit is ook de snelheid die we over het netwerk heen kunnen trekken. De server zelf draait vanaf 1 SSD waarop alle development eigenlijk gebeurd. Daarnaast is er een HDD software raid voor de file storage.
Er is op dit moment geen geautomatiseerd deployment proces.
Problemen huidige situatie
Performance op de IO is onze grootste bottleneck op het moment. Hierdoor is het bladeren / schrijven via SMB niet altijd snel en dit beïnvloed ook de load times van de pagina's / systemen.
Daarnaast denk ik dat deze workflow voor het aantal mensen op dit moment maar ook in de toekomst niet werkt. En zegt mijn gevoel dat we de oplossing niet perse in hardware maar misschien meer in workflow moeten zoeken.
Concrete vragen
Wat is jullie ervaring en advies op dit gebied voor dit soort bedrijven / werkplekken. Iedereen op zijn eigen systeem laten developen en via (eventueel automated) OTAP straat deployen naar een centrale omgeving? Of toch door gaan op bovenstaande manier maar met een zwaardere server of NAS? Of combineren?
Vragen waar ik mee zit op het moment dat iedereen op zijn eigen machine ontwikkeld zijn bijvoorbeeld hoe we er voor zorgen dat alle omgevingen gelijk blijven en we niet bij het deployen moeten gaan uitzoeken welke software / modules e.d. er op de server moeten staan. Daarnaast heeft niet iedereen voldoende kennis van servers e.d. om zijn eigen omgevingen helemaal op te zetten en strak te zetten ( lees: ze komen er vast uit maar zullen hier veel tijd op verliezen ).
Mochten jullie nog meer informatie willen dan hoor ik het graag! Ik ben vooral erg benieuwd naar jullie ervaringen en wat ook voor een developer als een prettige workflow word ervaren.
Vanwege de snelle groei van onze organisatie en in dit geval de performance problemen van de werk server die hierbij komen kijken was ik benieuwd naar ervaringen, meningen en advies van andere Tweakers omtrent het inrichten van een ''schaalbare'' server / workflow setup voor onze organisatie.
Achtergrond bedrijf
Het betreft hier een internet bureau met een zware nadruk op technische realisatie van web & mobile projecten. De werkzaamheden betreffen de ontwikkeling van websites, webshops maar ook veel integraties tussen systemen of stand alone platformen. Alle web gebaseerde zaken worden op basis van PHP / ReactJS / NodeJS e.d. ontwikkeld. Mobile development vind plaats in de native talen, Java en Objective-C / SWIFT.
We zijn op dit moment met zo'n 15 mensen op één locatie en verwachten dat dit de komende periode zal doorgroeien naar 20.
Huidige situatie
Op dit moment werkt iedereen vanaf zijn eigen Mac device ( MacBook pro / iMac / Mac Mini ), waarbij er via SMB een mount word gemaakt van de centrale server waar alle code staat maar ook alle server gerelateerde zaken draaien ( PHP, MySQL e.d. )
Als er meerdere mensen aan één project werken zal er voor iedereen een eigen ''folder/map'' zijn met daarin het volledige project eventueel gekoppeld aan een centrale MySQL database. Via GIT worden deze individuele omgevingen vervolgens ge-merged naar één centrale omgeving voor testing / al dan niet automated.
De Mac's hebben dus in verhouding relatief weinig te doen, alle daadwerkelijke processingen vind plaats op de server. Dit hebben we destijds op deze manier ingericht omdat we alle dev omgevingen altijd benaderbaar wilden hebben ( intern / extern is te configureren ). Daarnaast juist omdat we met PHP werken zijn er veel variabele die invloed hebben op het systeem dus als iets online gaat moeten deze omgevingen vrijwel identiek zijn. En als laatste, deze server word iedere nacht gebackedupt naar een lokale NAS en vanaf daar naar een cloud omgeving. Zo zijn we zeker dat we van iedereen zijn / haar werk altijd backups maken.
Er draait één router die alles aanstuurt en een drietal managed switches. Networking is alles 1Gbit en dit is ook de snelheid die we over het netwerk heen kunnen trekken. De server zelf draait vanaf 1 SSD waarop alle development eigenlijk gebeurd. Daarnaast is er een HDD software raid voor de file storage.
Er is op dit moment geen geautomatiseerd deployment proces.
Problemen huidige situatie
Performance op de IO is onze grootste bottleneck op het moment. Hierdoor is het bladeren / schrijven via SMB niet altijd snel en dit beïnvloed ook de load times van de pagina's / systemen.
Daarnaast denk ik dat deze workflow voor het aantal mensen op dit moment maar ook in de toekomst niet werkt. En zegt mijn gevoel dat we de oplossing niet perse in hardware maar misschien meer in workflow moeten zoeken.
Concrete vragen
Wat is jullie ervaring en advies op dit gebied voor dit soort bedrijven / werkplekken. Iedereen op zijn eigen systeem laten developen en via (eventueel automated) OTAP straat deployen naar een centrale omgeving? Of toch door gaan op bovenstaande manier maar met een zwaardere server of NAS? Of combineren?
Vragen waar ik mee zit op het moment dat iedereen op zijn eigen machine ontwikkeld zijn bijvoorbeeld hoe we er voor zorgen dat alle omgevingen gelijk blijven en we niet bij het deployen moeten gaan uitzoeken welke software / modules e.d. er op de server moeten staan. Daarnaast heeft niet iedereen voldoende kennis van servers e.d. om zijn eigen omgevingen helemaal op te zetten en strak te zetten ( lees: ze komen er vast uit maar zullen hier veel tijd op verliezen ).
Mochten jullie nog meer informatie willen dan hoor ik het graag! Ik ben vooral erg benieuwd naar jullie ervaringen en wat ook voor een developer als een prettige workflow word ervaren.