Development environments in the AWS cloud - Vancouver PHP Meetup

Preview:

DESCRIPTION

In this talk we will discuss the advantages of doing remote PHP development. We'll cover the challenges we faced working with large distributed teams with different OS's, hardware and knowledge. Presented by Prashant Kandathil.

Citation preview

Floating on a cloud: dev env. on AWSPrashant KandathilCo-Founder @ Tech Samurais prashant@techsamurais.com

Overview

BackgroundTask @ Hand

SolutionConclusionQuestions

Background

Varied Skills

7 Front-end devs

4 Full stack devs

1 Dev-ops

Hardware

Works on low powered machines

Different Operating Systems

40% 50% 10%

Task @ Hand

Product vs ProjectMultiple project streams for one product

Framework

Usage Billing Registration

Self Serve telus.com

Devs/project

~3 devs / project x 4 streams = 12 devs

Config requirements

No local configuration

Prototyping requirements

Easily prototype new technologies

Speed requirements

Switch easily between dev and testing

Flexible workstyle requirements

Work from home or the office

Solution

Major Tech

Remote DevelopmentCode is synced to AWS on save

AWS

Grunt and Bash scriptsRun action based on file type

.scss

.js

Grunt

language file bash script

.css

valid.js

loaded into cache

Code structureSmart syncing of files

Framework> controllers>> framework>>> files.php

AWS

telus.com> controllers>> framework>>> files.php>> billing>>> files.php>> registration>>> files.php>> usage>>> files.php

Usage> controllers>> usage>>> files.php

Billing> controllers>> billing>>> files.php

Registration> controllers>> registration>>> files.php

WFH or Office

App is public. Protected with auth

Managed Environments

Dev-Ops or senior devs build & manage AWS

Scaling Nginx Configserver {

listen 80;

server_name ~^(?<user>.+)\.servername.domainname\.com$;

. . . location ~ index.php {

if ( -d /home/$user/uss/docroot ) {

root /home/$user/uss/docroot;

}

fastcgi_index index.php;

include /etc/nginx/fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param PHP_VALUE "error_log=\"/data/log/nginx/$user-error.log\"";

Deployment FlowStart

Download git repo

Run init script

smart sync code visit url End

development

testing

select env

Trial new tech

Ansible to install apps. Git feature branches with new tech

Issues with Vagrant

Setting up Vagrant- Virtual Machine BIOS setting

- Bandwidth issues downloading large VMs - CPU intensive

Conclusion

AWS for dev and testingManaged environments

Init scripts and smart syncGrunt & Bash on sync

Questions