Get the Development, QA, Staging or Production Environment you need at the click of a button.
The current situation:
It wouldn’t be a bold statement to say that all software’s ultimate goal is to enhance the customer experience. How many times have we not read such comments on app stores or heard business say?
“Great app, but I can only give it three stars until the developers add ...”
But the Development team’s side of the story is
“I am waiting for the environment to test the code with new features”
Continuous Delivery and Continuous Integration can help release software updates more frequently and with almost no manual intervention, but there are some bottlenecks to being able to do this. Following are a few: -
Delay in getting the Environments
Lack of self-provisioning creates dependency on IT department.
Lack of easily customizable Environments
For Development, Testing and Staging with new features or updates to dependencies.
Manual Provisioning of Environments
Being repetitive and involving several steps, we would not be able to leverage the power of Automated Deployments and CI.
And the hilarious but unfortunately true risk of
“Oh! But it works on my laptop!”
Not being able to recreate the environments easily and consistently can lead to not being able to recreate performance issues or release code or updates to production confidently!
Inconsistent environments could result in such scenarios as a new update has been released to the production system and the system Admin might have put in the configuration or dependencies that only he or she is aware of to get the app working. Similarly the developer might have put in the unique settings on his or her laptop to get the code working on his or her workstation or laptop. Due to which every server becomes “works of art” and as unique as snowflakes. Needless to say inconsistent environments make it very difficult to determine why an application breaks when it's promoted to the next environment. Wasting the Developer and Operation teams time in determining if an issue is due to the source code or environment configuration.
What is an Environment?
It is not just an image or template of a virtual machine but all the compute, storage, network and several other resources (XaaS) that are required to host your application. Quite simply put, everything you can find inside the server room!
Environments on Demand at the click of a button
A solution that could give the Development, QA, Staging or Production Environment at the click of a button could remove all the bottlenecks and risks that we had discussed earlier and at the same time orchestrate Software-Defined Compute, Networking, Storage, Security and such to provide a smart infrastructure that is aware of resources needed by the application and is adaptive and responsive to the workloads dues to fluctuating business demand. All this while being easy to customise and simple
2. 2
““Great app, but I
can only give it
three stars until
the developers
add ...”
3. 3
“I am waiting for
the environment
to test the code
with new features”
4. software updates are
not being released
frequently?
Continuous Delivery can help but what can
make it really possible?
4
5. Bottlenecks
Delay in getting Environments
Lack of self-provisioning creates dependency on IT.
Lack of easily customizable Environments
For Dev, Testing and Staging with new features or updates to
dependencies.
Manual Provisioning
Being repetitive and cannot leverage the power of Automated
Deployments and CI. 5
8. But now with
Software Defined
Environments
Or
Environments on
Demand
Or
Phoenix
environments 8
9. “ In One Click
Devs, QAs and Sys
Admins can get the
Environment they
need! ”
9
10. Define
SDE
Orchestrates Software-Defined Compute,
Networking, Storage, Security and such to
provide a smart infrastructure that is aware
of resources needed by the application
and is adaptive and responsive to the
workloads dues to fluctuating business
demand while also being simple to use.
10
13. How can Environments on Demand help!
Self Provisioning, empowers the Devs and QAs
to bring up self provision environments, cutting delay due to dependency and
bureaucracy!
Push-button deployments to get
environments easily and run
automated tests, any version of the app to any environment. Helping in getting
faster feedback.
13
14. This is how easy it should be to define an environment
machines:
db:
mysql_5.0.27
www:
ruby19
passenger
nginx
network:
domain: qa1.example.com
14
man readable
&
asy to define
15. This is how easy it should be to define an environment
machines:
db:
mysql_5.0.28
www:
ruby19
passenger
nginx
network:
domain: qa1.example.com
15
man readable
&
asy to define
16. Other advantages
Automating orchestration
vastly reduces the possibility of human error, and makes it possible to scale
far beyond what people could do manually.
Reducing the cost
of cloud ownership by sharing resources and time to market drastically and
reuse your existing hardware resources.
Increase the quality of
service
16
17. Mitigating the risks by providing
Consistent Environments
throughout the software dev. process from Dev’s laptop up to
Production
Phoenix Environments
Providing resilient, fault tolerant Environments which can bring up
your infrastructure in one click
17
18. Infrastructure as code – IMMUTABLE!
• Extend the advantages
of version
controlfrom your app to
Infrastructure.
•Auto deployment
will cut the repetitive and manual process of configuring
all infrastructure resources.
• Get a unified view simplifying the18
“Welcome
to the
age of
Software
Defined
Economy.”
19. Do we need to throw
away what we have!
Suppose we already have our cloud, like
using Xen, VMWare and such…
19
20. Using OpenStack you
would have the
advantages of both
worlds!
It is interoperable with existing private
cloud providers like VMWare, Xen and such.
20
21.
22. What else can TW help
• Cloud Ready your App to be hosted on
either private, public or hybrid cloud
• Auto scaling
• Fault Tolerant
22
23. THANK YOU
For questions or
suggestions:
meghdoot@thoughtworks.co
m
For questions or
suggestions:
meghdoot@thoughtworks.co
m
Editor's Notes
Hello there, let us explore how you can get the env. That you need using OpenStack and Go CD.
These are the kinds of reviews that we generally see on the app stores by the users of an app
On this side is the developer side of the story
Continuous Delivery can help but what can make it really possible?
Let us look at some of the bottlenecks for not being able to release software updates frequently
Due to lack of self provisioning the devs have to depend on the internal IT causing delays
Or the existing solution is not easily customizable
Or there are just so many steps steps involved that its repetitive and prone to human error
…
Adding to all these the other risks are usual one of which is
The usual one, this one is on the dev’s environment cascading up to the production system
=====
Not being able to recreate the environments easily and consistently can lead to not being able to recreate performance issues or release code to production with confidence!
The sys admin could have put in the configuration or dependencies that only he or she is aware of to get the app working.
Due to which every server becomes “works of art” and as unique as snowflaks
====
Inconsistent environments make it very difficult to determine why an application breaks when it's promoted from one env. to next.
Is it because there's a fault in source code itself? Or is it env configs?
Over the course there are some unique configurations set by the sys admin in desperation to just get the app working on prod and s/he alone is aware of these changes.
Moving into the era of smart infrastructure
Get the environment you need at the click of a button
Environments is not just virtual machines but also the software defined storage, virtual routers, switches, firewalls, load balancers and several
We will demo the automated deployment of CRUD app on an environment …
First we create two servers
Install an os on them
In a while Configure the servers, we can use ansible, chef and puppet to do this
And fetch the repo from github, automate the build, run unit and functional tests and deploy it and also smoke test.
SDE will remove Delay due to Decencies
And using policies, teams can be allocated quota of resources and authorization to use them can also be fine grained.
Everything can be parameterized due to which getting the n.x update of a dependency into an environment is just a click away.
This is how easy it would ideally be for someone to get an env. With the new version of a dependency
This is how easy it would ideally be for someone to get an env. With the new version of a dependency
Automating all the processes, making delivery of new features, faster, precise and easily scalable.
Reducing the cost of ownership by reusing the existing resources
mitigating the risks of inconsistent environments and moving towards an intelligent infrastructure that is resilient and immutable
Getting the added advantages of Infrastructure as code
As you test the app at scale and once deployed, there could be hundreds of servers that might need to be brought up at need to scale the app. Using this approach we could cut the repetitive process and copy the configurations to more servers, virtual machines, switches, routers and storage servers instantly.
KVM - Kernel-based Virtual Machine. The virtual disk formats that it supports is inherited from QEMU since it uses a modified QEMU program to launch the virtual machine. The supported formats include raw images, the qcow2, and VMware formats.
LXC - Linux Containers (through libvirt), use to run Linux-based virtual machines.
QEMU - Quick EMUlator, generally only used for development purposes.
UML - User Mode Linux, generally only used for development purposes.
VMware vSphere 4.1 update 1 and newer, runs VMware-based Linux and Windows images through a connection with a vCenter server or directly with an ESXi host.
Xen - XenServer, Xen Cloud Platform (XCP), use to run Linux or Windows virtual machines. You must install the nova-compute service in a para-virtualized VM.
Hyper-V - Server virtualization with Microsoft's Hyper-V, use to run Windows, Linux, and FreeBSD virtual machines. Runs nova-compute natively on the Windows virtualization platform.
Bare Metal - Not a hypervisor in the traditional sense, this driver provisions physical hardware through pluggable sub-drivers (for example, PXE for image deployment, and IPMI for power management).