Category: DevOps Practice

  • 3 Steps to Building Data Science Models

    3 Steps to Building Data Science Models

    Have you ever considered supplementing your development skills with some data science? Expand your range and follow this quick tutorial on how to build your own predictive models using open datasets, Jupyter notebooks and Sequential models.

    Pick Your Data Game

    Your first step in learning data science is to find a dataset that fits your interests. A robust platform where you can find inspiration is Kaggle, a web-based data science environment for machine learning enthusiasts. It offers, not only open datasets, but also competitions and even free micro-courses.

    Maybe you want to change the world and help with scientific research. Maybe you’d like to jump in to win $65,000 in a sponsored challenge. Or maybe you’d like to start with some machine learning techniques. There is plenty of data to search through and there always are a couple of open contests to enter.

    For this tutorial we are going to use a dataset from a competition called “Histopathologic Cancer Detection.” It is very important to understand not only the data we are going to work with, but also the main purpose of this challenge. Looking at our example, we read the following: Identify metastatic tissue in histopathologic scans of lymph node sections.

    In layman’s terms, the goal is to determine/recognize/discover if there is a sign of tumor tissue in a given image based on a dataset of lymph node scans. This is enough information to know that our model will have to answer this question in a binary manner: if there is a metastatic tissue in a given image, the answer is yes; if there is not, the answer is no.

    Choose a Game Plan

    There are two main types of machine learning, supervised and unsupervised.

    In our case, we have a training set and a ground truth–train labels. In other words, we have prior knowledge of what the output values for our training images should be. Therefore, if we have a ground truth, then we know we are dealing with supervised machine learning.

    The goal here is to learn a function based on example input-output pairs. Having this function, the task is to map a new given input to a predicted output. Sound reasonable? Let’s jump into the competition sources and see if we have what we need.

    Train set: This set contains the data you will train your model on. It’s the set of plain images for which we already know the correct answer.

    Train labels: As you may have already guessed, this file contains the correct answers to each image in a train set.

    Test set: Set of images for which we do not know the answer.

    Our goal is to create a new file (similar to train labels) containing predicted answers for images from the test set.

    Game On!

    For this opportunity, I decided to explore Google Colaboratory. It is a free Jupyter notebook environment with Python 3 that requires no setup and runs entirely in the cloud. If you haven’t used Jupyter before, now is a great chance to get started. With Jupyter notebooks, you can write and execute code, save and share it, and even access powerful computing resources, all from your browser.

    We start our game by importing the files we need to Google Colaboratory. Here’s how: Remember to copy the imports as we will need them later.

    We will use the Kaggle official API (you can read more about the setup and obtaining needed keys here) to easily retrieve large datasets directly to a server environment.

    Now when you execute ls /content/, you should see:

    We are going to read dataset into the pandas data frame.

    The output should be as shown below:

    Having all data in place we are ready to construct our first model.

    The Sequential model is a linear stack of layers. The model needs to know what input shape it should expect. For this reason, the first layer (and only first) needs to receive information about its input shape. You can read more about the construction of Keras Sequential model here.

    We need to declare some helper functions to transform the data to fit our needs (map train set with train labels).

    Execute the code below and put on your favorite TV show … this will take some time to compile! Remember to change hardware accelerator to GPU. It’s free and can speed up model building time up to five times. Go to Runtime, then change runtime type and change None to GPU.

    Data Science Endgame

    Before we generate predictions, we should probably preserve our model (better be safe than sorry).

    The last step is to get the answers for the images in our test set. When all is computed we can see predictions for the first couple of images.

    To save final results and download them run this:

    It’s time to upload the files to Kaggle and wait to see our final percentage score.

    Stepping Up Your Data Science Game

    There’s nothing better than a little healthy competition. Since we are taking part in a real contest, we have to consider that there will be some winners and some losers. There’s no doubt that we want to be in the first group, but the model that we have trained so far does not guarantee this. We should improve the predictive power as much as possible (although watch out for overfitting).

    There are many techniques to do that, including adding more data, algorithm tuning or ensemble methods. It’s easy to list them, but not so easy to pick the ones that actually will improve our score.

    There are endless possibilities to increase the predictive power of this or any model. Pick a new dataset and try for yourself to expand your data science skills.

    — Magdalena Baracz

  • 7 Big Digital Transformation Trends

    7 Big Digital Transformation Trends

    As enterprises continue their rush to digitally transform their organizations, they’re investing big in retooling their software development pipelines, new artificial intelligence (AI) and robotic process automation (RPA) technologies and low-code development platforms, as well as putting considerable money into customer engagement software. Yet, the extent of success following these investments remains unclear and varies significantly from industry to industry.

    To shine a light on the digital transformation efforts currently underway, as well as the degree of their success, we’ve collected a number of fascinating trends in the most essential areas of digital transformation.

    Investment in AI, Machine Learning and RPA Technologies Hitting an Inflection Point

    According to the consultancy KMPG, enterprise investments in AI, machine learning, and RPA will rise to $232 billion by 2025 from $12.4 billion in 2018. “Nearly two-thirds of respondents indicate plans to fully implement RPA within three years. Another 18% plan selective use. As for cognitive automation, nearly half noted intentions to use these approaches at scale within 3 years, while 29% indicated selective reliance on cognitive automation capabilities. Some 10% said they would launch pilots and proof of concept projects,” according to the report.

    DevOps is Just Getting Started

    While we’ve been writing about the enterprise move to DevOps for years now, the investment in DevOps is just setting itself up to truly soar. According to the market research firm Market and Markets, the DevOps market will grow 24.7% annually, to $10.3 billion by 2023 from $2.9 billion in 2017. “The demand for DevOps solutions and services among enterprises is expected to gain huge traction, due to the increasing need for fast application delivery with high quality,” the firm said.

    Digital Transformation Spending to Top $1 Trillion This Year

    In research firm IDC’s “Worldwide Semiannual Digital Transformation Spending Guide,” global digital transformation spending will reach $1.18 trillion this year, rising nearing 18% from 2018. “Worldwide DX technology investments are expected to total more than $6 trillion over the next four years,” said Eileen Smith, program vice president with IDC’s Customer Insights and Analysis group.

    For 2019, the two industries expected to invest the most into digital transformation are discrete manufacturing and process manufacturing, which will invest roughly $222 billion and $124 billion, respectively. According to IDC, the top digital transformation spending will be in smart manufacturing, which will be supported by autonomic operations, manufacturing operations and quality. The retail, transportation and professional services industries will follow closely behind.

    IT and Business Leadership Chasm Widen

    According to research firm consultancy Capgemini, there appears to be a growing disconnect between the CIO and senior business executives. Capgemini’s research found that while in 2012, 65% of organizations believed that the CIO and senior business executives possessed a shared understanding of the role of IT in their organization. In their most recent survey, that figure dropped to 37%. Additionally, Capgemini found, 59% of enterprise respondents in 2012 believed that the CIO and senior business executives had a shared understanding of how IT could be used to increase organizational productivity. That figure also declined precipitously, hitting 35% in 2018.

    Low-Code Development Continues to Gain Higher Ground

    The demand for enterprise software seems to have no bottom. And no matter how hard they try, developers can’t code software quickly enough. This is why more enterprise software needs are being met by low-code development platforms.

    According to research from ResearchandMarkets.com, the global low-code development platform market will grow to about $27 billion by 2022, up from $4 billion in 2017 and at an annual compound growth rate of 44%.

    Digital Transformation, Customer Engagement Software Grow

    Digital transformations don’t mean much if they don’t reap increased revenue, land new customers and improve relationships with existing customers. And how enterprises engage with their customers is one of the most rapidly evolving aspects of enterprise technology today, from AI and machine learning to IoT devices and ubiquitous adoption of mobile devices. Customer engagement software ranges from staid CRM systems to customer self-service software. This class of software was a nearly $13 billion market in 2017, but will likely reach $22 billion by 2023, an annual growth rate just shy of 10%, according to market research firm Mordor Intelligence.

    Digital Transformation Success Grows Harder to Come By

    The success rate for digital transformation efforts is persistently, and dismally, low. According to research from McKinsey and Company, over time fewer than 30% of digital transformations succeed.

    And that failure rate appears to be growing worse, not better. McKinsey’s 2018 survey results show only 16% of enterprises believe their digital transformations will improve organizational performance over the long term. “Even digitally savvy industries, such as high tech, media and telecom, are struggling. Among these industries, the success rate does not exceed 26%. But in more traditional industries, such as oil and gas, automotive, infrastructure and pharmaceuticals, digital transformations are even more challenging: success rates fall between 4% and 11%,” McKinsey found.

    While enterprises are clearly investing into their digital transformation efforts and the desire to succeed is high, the high digital transformation failure rate says enterprises either aren’t taking the right approach to these efforts or they are not executing properly.

    Whatever the reasons for the high rate of failure, with the vast amount of business capital on the line and the increasing risks upstart businesses pose to those established in their markets, more enterprises better figure out soon how to get their transformation efforts right.

    — George V. Hulme

  • DevOps: What Do Governments Need to Know?

    DevOps: What Do Governments Need to Know?

    How the government can successfully implement and enforce DevOps practices

    The speed at which technology is being produced it outstripping the pace at which better development tools are being introduced, which makes secure development even more challenging. Unfortunately, the negligence of organizations and authorities is intensifying the issue.

    For this reason, organizations are adopting DevOps. for the betterment of technology. This way technology will be not only safe but also exciting to use.

    The term DevOps is derived from software development (Dev) and information technology operations (Ops), combined to create better results when separate groups work together as one team.

    What Can DevOps Do?

    DevOps has to manage the IT infrastructure as per the necessity of the recommended software code that is dedicated in a composite multi-tenant environment. There is a requirement to have the resources for provisioning, to get the suitable deployment model and also to authorize and monitor the performance.

    When DevOps is discussed, there is a requirement to have constant and incremental adjustments in the code versions so regular testing and deployment are possible. It might not always be feasible for DevOps to do coding from scratch, but they still must understand it.

    DevOps needs to connect several elements of coding and desegregate various segments of SQL data management or messaging tools to release the working software, with operating order and production infrastructure. It could be both the developers who started into operations and the system administrators who started into the coding domain. Either way, there is a cross-connection work function that is seeing a massive upside in the style of software that is produced and used in mission-critical applications.

    How Can DevOps Be Enforced Successfully?

    Now that we have discussed what DevOps do, it’s time to learn the ways in which organizations enforce DevOps successfully.

    Higher Authority

    It is essential that we refer to higher authorities. By getting support from the top authorities, we can easily manage the work of DevOps.

    “DevOps is fundamentally a reorganization.”

    –Adrian Cockroft, lead architect, Netflix

    Altering any management organization, with its deeply rooted techniques of functioning and complicated network of employees and suppliers, is a challenging job. So, solid backing at the beginning is as crucial as having employees. You cannot start a new technique without employee support; in the same way, you cannot begin a new plan without any support from authorities. You need someone from the top to monitor the work and provide feedback.

    Blameless Postmortem

    Adopting DevOps also requires every member of the team be comfortable in their learning. Hence, the blameless postmortem, which eliminates finger-pointing when things go wrong—highly recommended for DevOps beginners. Blameless postmortems are even required by some government offices.

    Blameless postmortems organize a cross-section of those invested in the project to evaluate why certain outcomes occurred. The postmortems include an examination of the situation and ways to resolve them through various procedures or technology variations. They are an excellent method to initiate constant development.

    Increase DevOps Engineers

    Another effective way of expanding DevOps and enforcing it in the government is through hiring DevOps engineers. A DevOps engineer is the individual responsible for all the steps during the process of DevOps, and are responsible for bringing both organizations together to work as a team. There are not enough DevOps engineers today and the workload is much more than they can handle.

    Start Small and Scale Up

    Whenever you start something new, start on a smaller scale. Whether you’re working on a business plan or testing a new recipe, you should always start small and work your way up.

    In the same vein, it is important to start small when implementing DevOps. Rather than go all-in at once, create a group of people who will work together as a team. If the results are good enough, then expand your implementations to a wider audience.

    Eliminate Restrictions

    Last but not least, it is essential to remove all the constraints involved. Eliminate any limitation that may occur during DevOps enforcement. Limitations could vary from generating new constructions or applying code variations to assimilating data foundations. If the constraints are not removed from the beginning, it may cause problems afterward.

    Conclusion

    With the expansion of equipment and expertise, new practices are introduced in the government. If applied properly, these practices could generate pleasant outcomes. DevOps, which brings together two forces for effective results, is one such practice.

    — Zehra Ali

  • 5 Ways Wireless Technology Will Evolve in 2019

    5 Ways Wireless Technology Will Evolve in 2019

    2019 will be a transformative year for the wireless world, with landmark developments in 5G, cloud computing and hardware. From stadiums and retail buildings to airports and even street corners, there’s no place that won’t be affected by the rapid evolution of wireless technology. And if you’re not up on the edge, you’re sleeping on the biggest story of the year.

    As CEO of Packet, I’ve experienced firsthand the latest advances in edge computing, 5G and hardware, all of which will integrate technology into our lives more than ever before.

    Below are my five predictions detailing how wireless technology will evolve in 2019—and how these breakthroughs will impact our everyday lives:

    Software Will Eat the Wireless World

    It’s understood that in our internet-enabled world, technology equals software, even though the reality is more nuanced. And even the cloud, the grand enabler of the latest software wave is itself being eaten alive by the software movement it spawned; cloud-native ecosystems such as Docker and Kubernetes are devouring the value of verticalized cloud providers and offering a portable software experience across any infrastructure substrate, spanning architectures, providers and form factors. This multi-billion dollar industry hasn’t been disrupted, and it is growing increasingly important by the day. In short, it’s a good time to be in software!

    Hardware Technology Isn’t a Commodity

    The influence of hardware is growing steadily, and it will really hit its stride in 2019. We believe that powerful, customizable hardware in collaboration with state-of-the-art software is the next big thing in cloud computing. This trend will help drive investment in everything from accelerators to offloads to alternative processor architectures, especially as the worth of custom-built hardware grows.

    Real Estate is Becoming Digitized

    The leading enterprises of the world are looking to deploy their technology opinion quickly and at global scale. From 5G to mobility to mobile gaming, this ambition requires a go-anywhere model that enables cloud-style infrastructure in hundreds or thousands of locations. In 2019, large real estate owners will move beyond traditional data centers to digitize assets such as co-working, stadiums and retail buildings with cloud and infrastructure.

    5G Technology Is Really All About Private Networks

    Two-thirds of organizations plan to deploy 5G by 2020, according to Gartner. However, as security and control are becoming increasingly important in the wireless world, large industrial companies are being led to explore the implementation of private 5G wireless networks. By deploying private LTE networks using technologies such as Citizens Broadband Radio Service (CBRS), enterprises will be able to efficiently deliver connected experiences from the sports stadium and airports to the urban street corner.

    Edge Computing: The Buzzword of 2019

    In case you haven’t heard of the already buzzy tech phrase, edge computing is computing that takes place at or near the source of the data, rather than relying on faraway cloud data centers to do the work. Edge computing is a flexible model that can be dropped in literally anywhere, allowing developers to think–and develop–on a much larger scale than they already are. In 2019, the edge will become the most exciting frontier in the cloud.

    — Zachary Smith

  • Autonomous Networks: The Future We Need Now

    Autonomous Networks: The Future We Need Now

    Automation has become a necessity for managing systems in today’s age of dynamic and agile cloud-based environments. Operators are looking to optimize with efficiency and minimalism—to do more with less—as the goal. This same line of thinking should be applied to managing the network or system infrastructure.

    While network operators face the same challenges as what is seen in compute environments, they appear to have the advantage of fewer pieces to manage. However, as the tendency of building more densely utilized CLOS fabrics, each network node has 10 to 20 times the number of servers under it. Even though there is a lower ratio of network devices to servers to manage, this multiplier means each network node has a higher potential impact—which means we can’t accept the notion that fewer devices result in a lower interest in automation, due to the high risk of outages. Automating these systems should be prioritized, spearheading the movement toward being completely autonomous, lowering the risks of day-to-day operations.

    What’s the Holdup?

    In the past decade, the transition to mobile has required the shift of applications to be flexible enough to move resources between sites and locations on demand. Led by hyperscale operators, the strategy causes application monoliths to separate into microservices, driving virtualization and containerization to allow for maximized portability. East-west bandwidth requirements expand as applications become more dispensed. This makes the network increase throughput and reliable—inciting the easy choice to adopt CLOS networks. These operators use off-the-shelf components, utilizing reliable (and cheaper) merchant silicon at the core. However, this pressures legacy network management methods by effectively increasing the number of devices from two to four distribution/core devices to 48-plus CLOS nodes. Hyperscalers addressed this issue with homegrown network operating systems (NOS), constructed with network automation to make it easier to manage at scale.

    But when small to midsized organizations try to imitate the hyperscale operators, they become restrained by legacy NOS architectures. We’ve been hindered by an establishment of manually driven networks, writing scripts on top of the command line interface (CLI). In the best-case scenario, we have tools such as Ansible or Puppet, which can bring automation and some orchestration to the network. In the worst case, network managers resort to just hiring more engineers. As a result, there remains a substantial gap between network and compute infrastructure.

    To display this gap between the industry’s current state and where we should be, let’s look at this graphic which shows the levels of service automation maturity:

    Most modern networks operate between Level 0 and Level 2, meaning operators are barely scraping by with a combination of zero-touch provisioning and screen-scraping scripts (and the increase of engineers). They are reacting to changes that occur and aren’t actually able to verify that automation worked, outside of logging in and manually reviewing the result—which absolutely does not scale, due to frequent errors and eventual, and immense, inconsistencies between design and actual implementation.

    Should Operators Look for the Solution?

    Cloud-native solutions provide significantly better experience, both in maturity and agility. They have sufficiently progressed at using software to manage other software, operating at Level 3 or higher on the above scale. We can leverage this for the network, but it has to start discarding obsolete architecture and modernizing the starting point—the network OS.

    Microservices, containerization and orchestration (with Kubernetes) are the foundation of cloud-native architectures and are directly addressing the challenge of automation—such as how network and application services automate with the same level of maturity by looking at service fabric mesh in the public cloud. By utilizing Kubernetes and employing modern containerized microservices architectures into the NOS, we unite NetOps and DevOps. The network is essentially just a complex distributed application and can be automated like other similar applications. We need to widely adopt autonomous networking and accept that a modern NOS architecture is needed to implement a method of building networks that match the same level of automation maturity we see with cloud-native applications.

    — Adam Casella

  • ‘DevOoops’ Moves: Deploying Code Out of Step

    ‘DevOoops’ Moves: Deploying Code Out of Step

    ‘Everything as code’ can create opportunities for misadventure for DevOps teams

    DevOps’ ultimate aim is to create efficiencies in the software delivery process. But it doesn’t always work out that way. Sometimes DevOps initiatives lead to mistakes—something we lovingly call “DevOoops.” CloudBees recently polled some colleagues and came up with five examples of a DevOoops in action. Following is a discussion submitted by Director of Engineering Laura Frank Tacho about deploying code out of step.

    Scenario:

    Running in parallel during CI/CD can speed up your automated testing and shorten your feedback cycles. Just make sure deployment is not executing as a parallel step. That misconfiguration will cause your code to deploy at the same time the tests are running, regardless of their exit codes, pretty much defeating the purpose of automated testing before a deploy.

    This scenario touches on a theme we’ve seen throughout most of the “DevOoops” stories our colleagues have come up with. The theme is how the emerging concept of “everything as code” can create opportunities for DevOps teams to slip on proverbial banana peels.

    In this case, we’re talking about sequencing problems in a process we can call pipeline as code.

    To be successful, teams need to extend a quality-first approach in automated testing throughout their continuous delivery life cycle—from code to commit to test, as well as through the various tiers of the development life cycle. And with a quality-first approach, you need to apply testing and quality management to your environment configurations and infrastructure as code.

    Laura’s example highlights how teams need to treat their CD pipelines as applications themselves. They need to check for and eliminate bugs and errors in CD pipeline code to ensure that code is operating as expected. Failure to properly manage the creation and evolution of complex CD delivery pipelines will result in significant cost or risk.

    So, if you don’t have proper test coverage on application code, you could end up releasing an application that hasn’t been tested at all. If the app doesn’t pass through a security gate, as it’s supposed to, you could release unintended preproduction data.

    While there are always risks with untested code, we have to give unique consideration to untested or unmanaged CD pipelines. We need to consider the risks of what missed gates could mean for our developers, our organization and our customers.

    Teams should do the following as they release their CD pipelines:

    • Build: Start from the left-hand side of process and work through the defining and coding of CD pipeline left to right in the direction your apps and development artifacts flow: from dev to test to deployment. While we may not be able to define an ideal automation solution completely on the first pass, going left to right encourages teams to focus on what the life cycle of an artifact looks like.
    • Manage: Define your CD pipeline using an everything-as-code or pipeline-as-code approach. For this to add value, you must manage development of your CD pipeline as you would your application code and apply software best practices. Check your CD pipeline code into a source code repository and leverage language-specific technologies that can check your syntax. (If you’re using Groovy-based code or Jenkins-based code, there are versions of Lint that can perform these functions.)
    • Create staging environments: You should establish staging environments or test pipelines to validate your CD process. These pipelines should go through all checks and gates against your real tools, using reference code that is representative of the applications your pipeline would be servicing but stops short of production into environments.

    This will give you an opportunity to iterate changes against your application code, do some initial scans and checks to collaborate to define your CD pipeline in code-managing SCM. Execute initial validation on scans as pipeline as code and then validate expected operations in a staging environment before you deploy it as the basis of the pipeline for your production of business-critical applications.

    Key Takeaways

    • This story highlights how crucial it is to ensure that your application code and environments pass through certain gates and checks before being deployed out to the customer.
    • You need to construct your CD pipelines so your parallel testing is managed as a gate to production, ensuring that properly tested and validated changes are not automatically deployed.
    • Deployment happens at the end of all the processes within a pipeline, and all required tests, validations, checks and approvals have been done before any change is deployed to the customer.

    To read our previous “DevOoops Moves” post, click here.

    — Brian Dawson

  • Application Monitoring Using Stagemonitor

    Application Monitoring Using Stagemonitor

    This article covers important steps to monitor a typical Java application using Stagemonitor tool, Kibana as a dashboard viewing tool and Elasticsearch as a data processing engine.

    Stagemonitor is an open source Java application performance monitoring (APM) tool that provides everything you need in development, quality assurance and production to monitor the performance of your Java web application.

    Using this tool, we can have different dashboards such as JVM dashboards, application server, request metrics, host, request analysis, web analytics, etc.

    Architecture of the Stagemonitor

    Figure 1

    The Stagemonitor agent sits inside the application and sends metrics and details about requests (request traces) to Elasticsearch. Metrics can optionally be sent to Graphite, Influx DB and Prometheus.

    Prerequisites

    • Minimum of 2GB RAM and 200GB hard disk
    • Java version of 1.8 or more
    • Install latest versions of Kibana and Elasticsearch

    Steps to Monitor Java App with Stagemonitor

    Dev Time Monitoring With Browser Widget

    This step illustrates how to enable a widget in dev time monitoring, adding the Stagemonitor plugin inside the Java app. We can do this in two ways: We can directly edit the pom.xml/build.gradle file by adding the required stage monitor plugins, or we can add dependencies in the application’s LIB directory.

    Some of the important plugins we must have in pom.xml/build.grade to get monitoring dashboards are Stagemonitor configuration, Stagemonitor tracing Elasticsearch, Stagemonitor tracing, Stagemonitor-jdbc, Stagemonitor-jvm, Stagemonitor-os, Stagemonitor-web-servlet and Stagemonitor alerting.

    We’ll get the Stagemonitor plugins from the following location: https://mvnrepository.com/search?q=stagemonitor

    After installing the agent, will have to create one Stagemonitor configuration file as stagemonitor.properties file under src/main/resources in case of maven application. Otherwise, the file must be located at the root of class path. At the end, it has to be under the WEB-INF/classes section.

    The following is what the stagemonitor.properties file looks like:

    stagemonitor.applicationName=My Application

    stagemonitor.instanceName=dev

    stagemonitor.instrument.include=org.example.app

    Request Dashboard

    In this section, we focus on setting up the time series database to collect the data and visualization tool to view the metrics in detail. Here we’ll use Elasticsearch as the time series database engine and Kibana as the visualization tool.

    To get the data from Elasticsearch database, we will include properties in the stagemonitor.properties file:

    stagemonitor.reporting.elasticsearch.url=value,

    stagemonitor.reporting.elasticsearch.username=value

    stagemonitor.reporting.elasticsearch.password=value

    stagemonitor.reporting.interval.elasticsearch=60

    After adding all the required values and restarting the server, we will be able to open the (automatically added) request analysis dashboard in Kibana. Along with that, we will be able to see different dashboards automatically.

    To use Influx DB as a time series database, we’ll have to configure the values in stagemonitor.properties file:

    #following the details contains influxDB

    stagemonitor.reporting.influxdb.url=http://localhost:8086

    stagemonitor.reporting.interval.influxdb=60

    stagemonitor.reporting.influxdb.username= value

    stagemonitor.reporting.influxdb.password=value

    Logs Monitoring using Kibana/Stagemonitor

    We can track logs using Kibana/Stagemonitor. In the metrics dashboard, we can see matrices such as what URL address we’ve hit and the time to complete the request (Figure 2). We can track the host details such as how many servers our applications are running, the status of the server, memory stats, CPU stats, network stats, disk usage stats, networks processed, network packets errors, network packets dropped and how many cores of the CPU the host is using.

    Stagemonitor provides all the required dashboards under the request analysis dashboard. To open the request analysis dashboard, click on: Dashboard – Load Saved Dashboard and select “Request Analysis.”

    Figure 2

    Figure 3 shows the details of the CPU, such as CPU usage and CPU load.

    Figure 3

    Below, Figure 4 shows total page views, unique number of visitors to the site and call tree, and how much time it takes to complete.

    Figure 4

    Figure 5 shows the transaction history and individual transaction details.

    Figure 5

    Figure 6 shows the JVM details and all the other memory matrices.

    Figure 6

    As mentioned above, we can monitor various application metrics and infrastructure metrics.

    — Sai Babu Tanguturi

  • Best Practices for DevOps in the Cloud

    Best Practices for DevOps in the Cloud

    DevOps is commonly defined as a methodology that combines software development with IT operations. The goal is to shorten a system’s development life cycle while delivering features, fixes and updates frequently in close alignment with business objectives. Putting DevOps into practice is an ongoing experiment for many organizations.

    Developers often struggle with continuous integration (CI) or continuous delivery (CD) performance, testing delays and other bottlenecks. In fact, one survey reported that only 34% of projects finish on time and only 42% come in on budget. Security and development teams must collaborate to keep up with the rapid development life cycle without sacrificing security with every update.

    Enterprise SaaS apps are not distributed like traditional software—they are continuously running services. So, CD is all about updating the service with a set of changes. In public clouds such as AWS and Heroku, this is done through pipeline stages (e.g. dev, test, staging and production). In platforms such as Salesforce, stages become sandbox environments, ephemeral scratch orgs and production instances.

    How can development teams shorten the development life cycle without sacrificing the integrity of the features and updates? In this article you will learn key DevOps practices to achieve predictable, reliable release management.

    Advanced Planning Ensures All Boxes Are Checked

    Agile planning is now de rigueur for enterprise development. It is best used if:

    • The product itself will most benefit from flexibility.
    • Regular face-to-face interactions and collaborations are needed between team members.
    • The end product requires regular updating, monitoring and continuous delivery to the client throughout the life cycle.

    For CD, ensure your user stories are sized correctly and that each story rolls up to an Epic that represents a standalone feature. This enables your team to release bite-sized pieces of functionality that are consumable by users and traceable back to your release plan. Also, define acceptance criteria for use in the verify stage so you know when something is done-done.

    Manage the Source Code, Especially When Working in a Shared Environment

    There are a few practices of app creation that impact CD. First, source code is not the only element of an enterprise solution. Schema, user interface, access control rights and static resources such as icons and images are all part of the creation process and should be managed just as diligently as source code. They should all be checked in to a version control system (VCS) as a single source of truth.

    Second, ensure that developers are making changes in a segregated environment. In some low code platforms, such as Salesforce.com, this becomes a challenge, but even in a database, multiple database administrations (DBAs) can step on each other’s changes when working in a shared environment.

    Functional Testing

    Automated quality processes are difficult to implement, but essential Selenium is a great tool for testing functionality and should be part of your DevOps practice. But there are several verifications that should be made before you get to functional testing. Static code analysis tools, such as PMD, are essential to ensure your development team is coding against a single style.

    Define a team style and enforce its use. Unit test coverage is also essential—incorporate them with a coverage of at least 75%. Finally, after these automated tests pass, implement a manual peer review. Old hands are able to spot opportunities for performance improvement where automated tools may not.

    Changes Should be Released in a Defined Pipeline with Strict Quality Gates

    Packaging for CD is about capturing changes that can be incrementally released into the next stage or environment. Development teams should dedicate a branch for each stage and bundle incremental changes into a promotional branch to leverage the merge conflict detection in your VCS.

    Changes should be released in a defined pipeline with strict quality gates that ensure the verification steps and enforce the order of release stages. Developers should not be able to bypass key stages throughout the development cycle—for example, moving from development to production.

    Focus on making smaller changes, which result in reliable, predictable releases. Finally, be sure to automate promotions. This enables your team to validate the promotion scripts in integration, test and staging before releasing to production, which decreases the likelihood of an unhappy surprise.

    Automate Configuration, Especially for End User Access Rights

    Make testing for proper configuration part of your verification process. Platforms such as Salesforce have powerful profiles and permission sets that enable user access to only the right information. Improper configuration can expose personally identifiable information (PII), credit card numbers or medical health data.

    Monitor for More Than Just Service Availability and Performance

    Most SaaS companies monitor service availability and performance. But excellent companies also monitor data access to detect improper configuration changes and monitor end user feature usage, which gives product managers visibility to their usage.

    — David Brooks

  • Combining the Best of Agile, Waterfall and DevOps Techniques

    Combining the Best of Agile, Waterfall and DevOps Techniques

    The spotlight currently may be firmly trained on agile and DevOps techniques, but large banks around the world still maintain core systems where traditional waterfall development techniques are used to upgrade and maintain software.

    So, which development techniques work best in an environment dominated by legacy systems but where innovation is fundamental to future success? How can banks combine the best of agile, waterfall and DevOps methodologies to deliver new products and services to customers at pace, without compromising mission-critical operations?

    Time is of the Essence

    One of the drivers for migrating from waterfall to agile is the need to deliver new features in shorter time frames to better satisfy the rapidly evolving needs of a business. This can be a challenge if, for example, an organization is reliant on a legacy platform that is updated using a waterfall methodology.

    In such a scenario, upgrades might be delivered every six to 12 months, which means long lead times associated with implementing change. This also creates issues around transparency in the upgrade process, because it is difficult to provide clarity on the changes that will be introduced in the next version of the software.

    One possible solution to this problem is to evolve the platform so that it can run in the cloud as a service-oriented architecture-based platform, which enables the adoption of agile and DevOps techniques when delivering updates to the software.

    This will allow the organization to deliver changes in response to clients’ needs in shorter iterative cycles, mitigating risk and enabling them to plan work in a more iterative fashion. While there is still a need to look ahead, the scope of work is not so fixed as it was in the past and can change along with new and different priorities.

    A Quicker Journey to Value

    This is important as businesses don’t always know what they will want in the future and need to be able to adapt different systems as the business and technology landscape evolves. Not only does the new approach accelerate the time taken to deliver value to customers, it also means features can be delivered incrementally at the point of need.

    Once implemented, this type of platform can support ongoing development of new features. Clients can collaborate with the developers of the software vendor to deliver features incrementally, allowing them to understand timing and to request the delivery of features for testing ahead of a full project completion.

    Feedback allows the development team to improve specific features reviewed and to apply what is learned to features yet to be developed. Clients can review the product through mini-demos early in the process to understand functionality, user experience and other areas of interest. They also  can have input into the prioritization of features, so there is transparency of project progression.

    Changes in Working Practices

    Naturally, this implies changes in working methods within the client’s business to allow for greater collaboration. It also requires more diligent and efficient testing and version control practices, particularly for those firms working in a regulated environment where changes to one element of a system can impact other areas.

    However, it’s important to remember that moving in-house developers from one environment to another will not happen overnight. Most traditional banks, for example, need to retain waterfall development skills to maintain and upgrade core systems while building agile and DevOps techniques alongside to build out the new customer-facing apps and services.

    In fact, abandoning waterfall and adopting agile for all development could introduce unnecessary risks to a process that previously has worked well and doesn’t require short cycle times. Often there can be merit in having two streams of development: one for existing back-office core systems and one for satisfying the rapidly evolving front-office needs of the business.

    Whichever blend of development skills, core systems and subscription services organizations choose to maintain, having a platform approach that brings data from core and new applications together will be increasingly important.

    — Harbinder Kang

  • How DevOps Can Help Speed Go to Market

    How DevOps Can Help Speed Go to Market

    With continuous evolution of IT systems, speed and flexibility have become of paramount importance for businesses. This requirement has caused a massive shift in the IT delivery system. Now, building and releasing a better product in the market is not enough for businesses to stay ahead of the competition. Organizations need an agile approach to understand and adapt to information, trends and new developments, and to meet the demands of time-to-market features.

    DevOps is one such cultural shift in the IT field that shows how software development and IT operations can work together to reduce time to market. It has attained such a great profile in the market that people have started measuring the outcomes for businesses that adopt it.

    If you’re just beginning with DevOps, here are some tips that will help you understand how you can accelerate time to market for your product and services.

    How Can DevOps Accelerate Time to Market?

    There are many ways in which DevOps helps organizations accelerate time to market for their product. Some of the most effective ways are:

    Faster Delivery of Features and Modifications

    When development teams build software, they connect with IT operations to send the software for testing. If the product is completely new, operations need to create a testing environment. If the software is an updated version of the current product and there is already a testing environment for it, operations still need to configure and add interfaces and side applications. So, a developer can only deploy code to the software when the operations team tests the product, which is a very time-consuming process.

    However, DevOps eliminates such time-consuming tasks from the software development process. For example, with automated testing of web apps developers get quick feedback and automated integration allows them to make changes in the code base more quickly. Therefore, organizations can release small or incremental updates of the software while delivering new features to market faster.

    Enhance Efficiency

    DevOps encourages development teams to give more time to value-creating work. When businesses use automated testing and integration, developers don’t have to waste their time waiting for machine configuration or code integration. Both tasks can be achieved by clicking a button on the self-service portal.

    For example, many European banks have implemented DevOps in their software process, which resulted in 25% efficiency improvements in providing updates for their online banking applications. It also reduces the workload for the IT operations team so that they can work on more challenging tasks to add more value to the company.

    Improved Quality Code and Quick Recovery from Failures

    When software is released to the market, developers often start working on their next project. So, they usually don’t have any motive to predict or prevent future problems related to software; it’s all up to the operations team. But DevOps keeps developers involved during the entire life cycle of a software product for updating any feature or application, which results in improved quality code. Also, it requires only a few fixes as developers can track and eliminate potential problems while writing code.

    As developers work with smaller chunks of code, when a failure occurs in any product, bugs can be tracked easily to their resources. Also, human errors are reduced thanks to the automation that DevOps provides to the software life cycle, while allowing companies to deliver fixes faster.

    Best Practices for Using DevOps

    Just like agile approaches, DevOps doesn’t have any pre-planned implementation model. But, most companies that use DevOps follow these best practices:

    Set a Business Standard

    The improvements in an organization can never be measured without having a business standard. If you want to reduce time to market for your software development process, then have a look at the current development process and find out which areas need improvement. For example, you can review the steps involved in making a project live and identify any defects, inefficiencies and constraints in the project.

    After reviewing these processes, you can set a business standard that shows the current software development process and the improvements that are required to reduce the time to market. With DevOps, you can set a business standard more quickly and improve your software deployment process.

    Optimize and Eliminate Unnecessary Inputs

    While reviewing your software deployment process, you might encounter some inputs that don’t add value to the process and reduce its speed. Eliminating such inputs from the development process is crucial, but make sure there is open communication between you and your team so efforts are not wasted.

    What you can do is set up the right team structure and use tools that provide transparent and fast communication between the teams. For example, you can structure a team that includes marketing managers, right analysts and, most importantly, DevOps resources.

    Allow Continuous Deployment in Software Process

    Continuous deployment is one of the essential key factors of DevOps that helps in reducing time to market. It is the continuous delivery pipeline that doesn’t involve any manual intervention in-between. In continuous deployment, automation stimulates and simplifies communication and validates the software process to ensure timely releases.

    However, not every company implements continuous deployment in its software development process. Usually, the organizations that need to move faster to provide new features, applications or security channels for their product use continuous deployment. For example, media companies and online retailers use continuous deployment in their software development process.

    Improve the Quality of Automated Tests

    One straightway to reduce time to market with DevOps is improving the quality of automated tests. In any organization, testers test the application for its functionality and other factors. But this testing process can be enhanced by engaging with clients and a targeted audience in the development process. Taking input on the overall functionality and user interface will not only improve the testing process, but also help you find bugs and defects earlier.

    It is proven that if bugs are not tracked and eliminated in the early stages, it can greatly impact the time to market for your software product. For example, if you want to test your web application browser compatibility, then consider cross-browser compatibility testing. With end-to-end automated testing, the overall testing process can be improved, which will result in reducing time to market. Some other benefits of automated testing that can improve your DevOps are:

    • Track and eliminate bugs and errors in the early stages to improve the system’s capacity.
    • Improve the security of your software product.
    • Enhance custom engagement and satisfaction with a high QoE score.
    • Less cost of ownership.
    • Meet the industry standards and compliance regulations in a better way.

    An improved automation strategy helps move your product to market faster and allows your resources to do more high-value tasks. Also, the development teams will be more encouraged and confident to add new features to the application, as it will be tested more thoroughly.

    Conclusion

    Today’s businesses heavily rely on applications to collaborate, communicate, complete sales and operate more proficiently. Therefore, they strive to bring these applications to market more quickly so they don’t miss any opportunities and easily adjust to the market standards. To achieve these objectives, organizations must adopt the right DevOps practices in their software development processes to reduce time to market.

    — Junaid Ahmed