navigation software platform: automating the server configuration igor jovic, whitecity soft case...

Download Navigation software platform: Automating the server configuration Igor Jovic, Whitecity Soft Case Study

If you can't read please download the document

Upload: emma-carroll

Post on 17-Jan-2018

233 views

Category:

Documents


0 download

DESCRIPTION

Navigation software What is needed to have smthg like this?

TRANSCRIPT

Navigation software platform: Automating the server configuration Igor Jovic, Whitecity Soft Case Study Whos talking? Whitecity Soft providing turn-key software solutions since 2006 Igor Jovic I press keys for money since 2005 Navigation software What is needed to have smthg like this? Basic infrastructure needed to run it Static WebAPI Server GeocodingRevgeo Routing Geo-grid CMS API Search Server CMS Web Add some load-balancing And for additional environments? stage-01stage-02preprod -Setting up new environment would take days -10 distinct instances and 4 DBs per env -Load Balancing of some instances -Manual code deployment to those envs is a mess What can we do? Automate ALL the servers!!!!! With ansible went from this. -"oh, you want to deploy and older version? I think we've been using elasticsearch 1.7 there. Or 1.8? -I think Marc did the setup for that. I'll have to go through history to see what's on the server -yeah, I wrote readme.md. A year ago, why? -we have some env. variable for that. I dunno which. to this -code is always followed by an appropriate configuration needed to run it -need to change an environment variable for the new feature? Add it to the config -always have the complete instance configuration for the code -No manual access to the servers. -ansible: agentless tool for system configuration, software deployment and orchestrations Steps for a new environment 1.aws api - create instances (mr. Nenov can say more :-) - you get a clean-slate environment 2.run ansible playbooks to install everything - you now have a complete environment ready for deployment 3.build and deploy via CI tools (bamboo) - pull the latest code from the "stage02" branch - run automated tests. If fails, notify - build app - deploy app Results -total time needed for this: 2h (AMIs with 300GB databases) -everything automated, no manual entries: no deploying of wrong files because of some stupid typo -staging environments for some new features can be made as needed, no long-term planning -non-production environment completely managed by a DevOps team of two people and a few hours per week What about monitoring? -All logs in cloud (logentries) -Instance monitoring via librato and pingdom -transparency in system behaviour: we always know what's going on And Production? -More load-balancing -Two-phase deploys -Configuration still via ansible