Private

Hybrid

Public

Irasna Consulting

Amazon AWS

Microsoft Azure

Google GCE

 Build on Legacy, Strengthen your Present, and Plan for Future

 Architect, Implement, Automate, Monitor, and Enhance

Programming

Build Test & Prod Env

Testing

DevOps

Continuous Integration

Continuous Delivery

Software Development

A customized set of Software Development Lifecycle (SDLC) steps that work well within the culture of your organization and technological ecosystem are utilized, in-turn maximizing the use of existing software development products and licenses. Proven and tested open source programming languages, frameworks, and software development tools are given priority over costly commercial off-the-shelf tools. Software development is performed either on-site or off-site, or through a combination of on-site and off-site resources. The off-site development resources are managed at our facilities  and coordinated by a designated point-of-contact (POC) directly reporting to the client. Delivery schedules, status updates, and issue resolutions are all managed by a single point-of-contact.

 

Delivery schedules capture delivery dates for all major milestones such as requirements gathering, analysis, architecture, design, prototyping, review, development, testing,

 

 implementation, go live, and maintenance.

 

Programming and Scripting

Programming and scripting languages are selected based on the requirements provided by the client for developing the application, type of tasks the application needs to perform, and the environment it needs to run in. Mostly modern languages such as Java, Java Scripts, Go, C/C++, Linux/Unix Shell Scripts, SQL, PLSQL, NOSQL, Python, Ruby, Perl, and Domain Specific Languages (DSL) associated with certain tools running in the client's ecosystem are selected.

 

Version Control for Software and Build Components

Software version control, branching, merging, and code repository management is performed through the use of tools such as (Subversion (SVN), git, github, PVCS, ClearCase, AccuRev, Preforce, TFS, VSS, SCCM, etc.). Built packages and components are managed through the use of tools such as (maven, gradle,  ant, and make) along with a build artifact repository manager such as (Sonatype Nexus, Archiva, JFrog, and Artifactory). These tools are selected based on the ecosystem within which they need to perform these tasks.

 

Integration and Deployment

See Continuous Integration (CI) and Continuous Delivery (CD).

 

Architect, Design & Implement Secure Network to Build Test & Production Environments

Select appropriate regions  and  availability zones. Create VPCs, Subnets, Virtual Private Gateway, and VPN/Direct Connect.

Implement Test & Production Environments

Build, configure, and maintain Test and Production environments in private, hybrid, and public cloud. Select technologies that work seamlessly to build the ecosystem (hardware, middle ware, application stack, maintenance, and monitoring tools). Implement system hardening routines to establish security and to remove vulnerabilities. Provide access to appropriate testers and users. Establish migration strategy from private to public cloud and conduct pilots to ensure a smooth transition.

Complete End-to-End Testing of Ecosystem

Complete end-to-end testing comprised of (incremental, integration, functional, usability, scalability, regression, load, stress, performance, penetration, system recovery, and user acceptance) is performed. Testing includes all the components of the complete ecosystem (Network, Security, Middle Ware, Operating Systems, application stack, development tools, deployment tools, automation systems, and monitoring tools). Interaction between all components of the ecosystem is tested, verified, and optimized. Where applicable, black box and white box or a combination of both types of testing is performed. Once the system goes live and is operating in the production mode, a set of smoke test and sanity test routines will be established. These routines will be run on each subsequent enhancement, configuration change, deployment, patching, and bug fixes to the system. Also, at this stage, all manual test routines can be converted to automated tests through a set of test automation tools that work seamlessly well within the organizational ecosystem.

Incremental Testing, Reporting, Feedback, and Corrections

Through out the implementation phase incremental testing will be conducted of all subsystems. Test reports will be generated. The testing progress is  communicated to all the stake holders and the project teams. Feedback is continually received and the systems are updated through an iterative process.  At the end of the iterative process, a final cut is made and deployed to production systems (go live).

DevOps

Optimize and automate all aspects of your IT ecosystem including legacy, hybrid, and public cloud. Build infrastructure through code. Version control all software and infrastructure changes. Continually integrate (CI) code as it is checked into the version control repositories. Automate software and infrastructure deployment builds. Version all build components and deployment packages. Continually Deploy (CD) built packages through blue green deployment cycles. Gain real-time in-depth visibility through monitoring tools into the inner working of the IT operations. Monitor system health around the clock. Collect, secure, and analyze massive streams of machine  data generated by all subcomponents of your ecosystem. Set threshold conditions and alerts. Identify licensing issues and security vulnerabilities. Monitor real-time usage, system behavior, issues, malicious attacks, hardware and software failure, system degradation, system load, and system performance. Visualize and share real-time data in custom reports and dashboards. Search, navigate, and interact with data to identify patterns, trends, thresholds, and exceptions. Auto-scale and release computing resources based on real-time load and customer usage. Automate management of multiple environments, user access, computing resources, applications, operating systems, deployment of patches, bug fixes, software upgrades, and enhancements.

Tools, Methodologies, and Processes

An effective implementation of DevOps practice highly optimizes product delivery from development to operations while reducing defects and improving quality. The optimization is achieved by utilizing a set of methodologies, processes, and tools. Dev, QA, and Ops teams see each other as important stake holders and actively collaborate to resolve issues and  to improve processes. A wide array of automation tools, methodologies, and processes are available to set-up a DevOps practice, but a skilled DevOps practitioner will carefully select a subset that works well within your IT ecosystem.

Continuous Integration (CI)

Continuous Integration is a feature of DevOps which automates many manual, error prone, time consuming, and repeatable tasks. Incorporating this feature within your DevOps environment reduces human errors  which normally occur while performing lengthy, highly technical, off-hours, and tedious tasks. It automatically integrates code as soon as a change is checked into the version control repository. The integration issues are identified and corrected  early and often. It detects and corrects merge conflicts as they are introduced into the system. It quickly isolates code changes that break builds. It streamlines and Automates dependency management. It facilitates rapid development of custom software by readily making  open source components and frameworks available to the developers through out the organization. It saves time and effort  by facilitating code sharing across multiple teams through out an organization. The code changes are continuously monitored  and detected which in turn triggers automated builds. If a build is successfully completed, a set of automated unit tests are run and results are generated. Build packaging is triggered upon successful completion of unit tests. Each build and all associated binary components are version controlled and checked into a binary repository. Build status and reports are pushed to the dashboards. Automated notifications regarding the status of builds are sent to the stake holders and the development team members.

Tool Selection & Implementation

An effective implementation of Continuous Integration tools highly optimizes product delivery and reduce errors. A wide array of automation tools are available for implementing this feature, but a carefully crafted set of CI tools which complement your existing ecosystem will be selected, configured, and implemented to take full advantage of this feature.  Existing CI tools that are partially automated, could also be fully automated and optimized to gain additional benefits.

Continuous Delivery (CD)

Continuous Delivery is a feature of DevOps which automates many manual, error prone, time consuming, and repeatable tasks. Incorporating this feature within your DevOps environment reduces human errors  which normally occur while performing lengthy, highly technical, off-hours, and tedious tasks. The Continues Delivery cycle is triggered when the Continuous Integration cycle is successfully completed. It automates the deployment of the built software packages to the Integration, Test, and Production environments.  The promotion of the code from a lower environment to a higher environment could be triggered manually after verifying test results, or it could be automatically triggered upon successful completion of an automated test cycle. This is configured based on client preference. A completely automated environment contains separate deployment containers, normally called as a blue and a green container. The automated deployments are alternated between these two containers. Once the deployment is complete, the user traffic is gradually diverted to the new container. If any critical issues are reported by the users using the newly deployed code, all traffic is routed back to the container containing the previous version of the code.

 

In addition to the deployment of the internally build custom software packages, all changes to the ecosystem are managed and versioned as code. These changes include scaling the infrastructure by adding and removing computing resources, deploying prepackaged containers, COTS packages, open source software packages, enhancements, patches, configuration changes, adding and deleting users, and granting or revoking user access to various resources.

Tool Selection & Implementation

An effective implementation of Continuous Delivery tools highly optimizes product delivery and reduces errors. A wide array of automation tools are available for implementing this feature, but a carefully crafted set of CD tools which complement your existing ecosystem will be selected, configured, and implemented to take full advantage of this feature. Existing CD tools that are partially automated, could also be fully automated and optimized to gain additional benefits.

Copyright (C) 2015 Irasna, llc. All Rights Reserved