As Developers / Managers we almost everyday think and talk about faster / shorter Software Development cycles to increase our market presence/reach. Is there a way to measure how fast we are ?
Speaking of cycle: In Cycling a term “Cadence” is used, which simply means the speed at which you pedal. Cyclists measure this in revolutions per minute, or rpm. Similar to Cadence in Cycling, the cadence of a software team is measured by how fast and how frequent you can take your software live. Can you do this on every day, every week ? Do you have the tools for the same to Scale UP ?
While we try to improve the cadence of the team we have many challenges around Infrastructure Scaling, Test Integration, Configuration Management, Monitoring for uptime, Log Management, Security of Servers, Dev-Test-Prod setups, Maintaining single source of truth for your assets, etc… And how does these changes impact team dynamics ? If you have adopted some strategies have you noticed that your team has improved? do you need more QAs or do you need more sysadmins ? do you really need those many routers, servers or backups?
Rootconf is a conference which tries to address some of the challenges we face when we fine tune our infrastructure to be able to appropriately respond to a business need, while we Scale UP our Cloud or Web Infrastructure.
Developing a good Continuous Integration/Deployment/Testing/Delivery strategy is critical to improve the cadence of your team. Infrastructure and DevOps is an upfront investment human, time & money. The challenge always is whether you’re willing to make that investment right away, or in the future at a much higher cost and effort.
Rootconf is a conference which will help you to plan and develop a strategy map for infrastructure and devops. It will show you the building blocks for reaching a strategy for Infrastructure Scaling, Continuous Integration, Deployment and Delivery.
Rootconf is targeted at individuals, teams and companies that are seeking to scale the effectiveness of their developer teams and performance of their web stacks, thereby increase the Cadence of their software delivery.
Organizations which need a CI and CD strategy to achieve the above will find a substantial headstart in doing so, by attending Rootconf.
14th and 15th May 2014
The Energy and Research Institute,
4th Main Rd, Domlur II Stage,
16th and 17th May 2014
MLR Convention Centre,
J P Nagar 7th Phase,
Brigade Millenium campus,
For questions about submissions or the conference, write to firstname.lastname@example.org
For Rootconf 2014, we are accepting proposals for Full Talks, Crisp Talks & Flash Talks for the Conference, and proposals for hands-on 3 hour workshops on the below topics. For more information on the types of talks, please checkout the Format tab.
- Infrastructure Scaling & Automation
- Treating your infrastructure as code.
- How did you do scaling and what were your automation strategies while you were gunning for scaling.
- Continuous Integration
- Tell us how you have done it for your organization ?
- Any use case around how it impacted your development team / process.
- Reference Tools – Jenkins, Travis CI, CruiseControl, TeamCity.
- Tell us how you have done it for your organization ?
- Any use case on how you reduced your deployment time ? Did you reduce your time to market your product by Adopting CD ?
- Reference Tools – Chef, Puppet, Ansible, Salt
- Automating Testing
- How much manual can be automated ?
- How did you automate ? What tools di you use ?
- What framework(s) did you use ?
- Did you use heavy weight Selenium or Watir or Sahi?
- Tools that work across heterogeneous languages (PHP, Java, C, Mobile)
- Code Security
- Trust no one - including the developer.
- How are you testing your code ?
- Do you run vulnerability testing part of the CI ?
- Best Practices for secure coding
- Server side security
- Data at motion
- Is internet really safe, how do you protect your data. Is HTTPS alone sufficient ?
- Data at rest
- Do you need to implement standards?
- Code Security
- Log monitoring and server monitoring
- The heartbeat / lifeline of your business: tell us more about how you monitor.
- Do you use any of these tools? Graphite, Sentry, CopperEgg, Loggly, Papertrail, Splunk, Nagios, Monit, etc..
- Cloud databases:
- NoSQL Databases (DynamoDB, MongoDB, Couch)
- The good and bad of NoSQL
- Automation challenges of NoSQL
- Automatic remediation of services and servers.
- Process Protection using Service Protector, Monit
- Auto Scaling Groups
- New tools
- Do you have more tools that makes you a better DevOps Engineer ?
Talks can submitted for the following OSes:
Continuous deployment with Fabric
People attending this talk will leave with an understanding of continous deployment and continous deployment tools in general and Fabric in particular.
They will appreciate the usefulness of a continous deployment tool like Fabric. Essentially they will realise the time they save by using a single step build process. By the time they leave, they would have learned how to write a Fabric script which can automate deployment.
- Understands what it means to ssh to a production server.
- Must have deployed a web application to production.
- Basic understanding of Python.
Your time is precious and is best spent writing code. It should not be wasted on a production server doing the repetitive task again and again. And by repetitive task I mean fetching the code changes to server, installing the libraries, restarting the web server, restarting the proxy server and so on.
Code changes continously. And you need to deploy the code to production every day, possibly you want to deploy with every code push. And sshing to the server everytime you want to deploy, and doing the repetitive tasks is a waste of time and energy.
So, deployment of code should be automated. Joel’s test has a requirement that build should be a one step process.
Fabric is a command-line tool for streamlining the use of SSH for application deployment (taken from docs).
We will write a basic web application using Python. This application will serve few urls, it will depend on certain third party libraries which are installble from PyPI. We will use gunicorn as the web server and nginx as the reverse proxy.
Everytime we want to deploy we need to do the following:
cdto required directory.
- Fetch the code from the repository and checkout to master. (We will use github)
- Activate the virtual environment.
- Install the requirements i.e the third party libraries on which the application depends.
- Kill existing gunicorn process.
- Start a new gunicorn process.
- Restart nginx.
We will ssh to a server and will deploy the code there. We will perform the steps mentioned above. You will notice the time it takes and pain involved in performing those steps manually. And then we will write a Fabric script which can automate these steps for us, which will be much faster than the previous approach where we manually had to do every step involved in build.
We need a web application for this workshop. We will use Python to write our web application. So, you must know the basics of Python.
Every person attending the workshop would not be aware about the same Python web framework, so we can’t use a framework for the web application. Our web application will only use standard Python library. Our web application will be WSGI compliant, and we will use Gunicorn which is WSGI compliant too. Read this to get a basic idea of WSGI.
Gunicorn is a wsgi server. Read about gunicorn here.
You need a deployment server to gain a first hand experience of deployment. I have an ec2 server, and suggest you to have a server too.
Make sure you have port 8000 and 8001 open on your server.
- We will finally make port 8001 non-public. But in the initial stages it might help with debugging.
Have the following things installed on your development machine as well as on deployment server.
Make sure your server public key is added on github, so you would be able to pull from github.
I have created the web application which we will use throughout this workshop. Check it here.