{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/wQkrKbJZUqK24WDRABya/9JJSd55kUCD7308oVHah/VttwVM63r-5.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{Link as n}from\"framer\";import*as a from\"react\";export const richText=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is Smoke Testing?\"}),/*#__PURE__*/e(\"p\",{children:\"Smoke testing, or build verification testing, should ideally happen after each new build and before standard software testing. Ideally, it should take place any time you introduce new features to a product.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"While smoke testing may seem pretty similar to standard testing, there are a few important differences. First, smoke testing only applies to a limited number of test cases. Second, you only use smoke testing with valid data.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s also easy to confuse smoke testing with sanity testing. But the two tests serve different purposes. While smoke testing is necessary for assessing stability, sanity testing is more about verifying rationality. Either way, both types of tests play an important role in quality control.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Benefits of Smoke Testing\"}),/*#__PURE__*/e(\"p\",{children:\"Without a doubt, smoke testing can help iron out the kinks in your software and help you build and iterate more efficiently.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"With that in mind, let\u2019s take a look at some of the benefits that come from using smoke testing in the software delivery lifecycle.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Find Bugs Early\"}),/*#__PURE__*/e(\"p\",{children:\"As the saying goes, test early and test often. Smoke testing is a great way to discover bugs in your software. If you catch bugs before software goes to the testing phase, you can eliminate rework down the line and increase the chances of shipping better software.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Avoid Wasting Time\"}),/*#__PURE__*/e(\"p\",{children:\"In a busy production environment, you can\u2019t afford to waste any time. This is even more important when you\u2019re sharing testing resources.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Running smoke tests before QA testing is a way of performing your due diligence and eliminating common errors. With the right approach, your team should be able to work much more efficiently.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Lower Costs\"}),/*#__PURE__*/e(\"p\",{children:\"It may sound counterintuitive, but smoke testing can cut costs and contribute to a leaner production environment. In general, errors become more expensive to fix as you move through production.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Improve Workflows\"}),/*#__PURE__*/e(\"p\",{children:\"Performing QA isn\u2019t much fun when projects consistently fail during software testing. Running products through smoke tests can help QA teams streamline testing, leading to greater productivity and smoother workflows.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Make Better Software\"}),/*#__PURE__*/e(\"p\",{children:\"At the end of the day, your main goal is to make better software and maximize profits. Smoke tests prevent small bugs and vulnerabilities from slipping through into production. This results in better software and happier stakeholders.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Common Examples of Smoke Tests\"}),/*#__PURE__*/e(\"p\",{children:\"When you boil it down, there are many different types of smoke testing, which vary based on the specific use case. The three most common types of smoke tests include integration, acceptance, and system testing, which we\u2019ll examine in this section.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Integration Testing\"}),/*#__PURE__*/e(\"p\",{children:\"Integration testing should occur any time you implement new modules in your software. With integration testing, you can test two modules at a time or test all your modules at once.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Acceptance Testing\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Acceptance testing is necessary whenever you release a build to QA. During acceptance testing, look to verify any new functions in your build to make sure they work as designed.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"System Testing\"}),/*#__PURE__*/e(\"p\",{children:\"Running a system smoke test will let you assess performance at the system level. In other words, it lets you see how workloads integrate with your underlying systems.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"How to Execute Smoke Testing\"}),/*#__PURE__*/e(\"p\",{children:\"There is no right or wrong approach to smoke testing, and strategies tend to vary from company to company.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"As time goes on, your company will form a unique approach to smoke testing. In the meantime, you can use the following steps to implement smoke tests in your production environment.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Select Test Cases\"}),/*#__PURE__*/e(\"p\",{children:\"The first thing you want to do is identify the test cases that you want to analyze. The test cases you select should give you a solid overview of the product\u2019s core functionalities.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"At the same time, you want to avoid testing features that are less important. For this reason, it\u2019s a good idea to be selective about the test cases you run.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Build Smoke Tests\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Once you identify the smoke tests you want to run, the next step is to write test scripts. As a best practice, you should always use a single script for smoke testing. Using a single script increases flexibility during testing.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Run Smoke Tests\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"After you create smoke tests, the next step is to run them on your build. Once this is complete, you can move on to analyzing the results.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Make Changes\"}),/*#__PURE__*/e(\"p\",{children:\"If the build passes your smoke test, you can pass the product on for functional testing. And if the test is a failure, you send it back for rework.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, teams often run multiple smoke tests during a development cycle. As such, don\u2019t be afraid to kick a product back to your developers for more changes.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Manual vs. Automated Smoke Testing\"}),/*#__PURE__*/e(\"p\",{children:\"Most of the time, companies start with manual smoke testing. This involves checking to make sure navigation paths don\u2019t negatively impact core functions. If the navigation paths have underlying issues, the software should go back to the developers for further iteration. The process repeats until the software passes inspection.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Automation typically comes into play later on in the process after you define a set of smoke tests. By automating smoke tests, you can run large numbers of tests at a time and shorten the testing process before the software goes to QA.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"How Plutora Makes Smoke Testing Simple\"}),/*#__PURE__*/e(\"p\",{children:\"As you can see, smoke testing is a pretty important part of software testing. For the best results, however, smoke testing needs to run smoothly. After all, DevOps moves quickly, so the last thing you want to do is run slow and inefficient tests. This can act as a barrier to production and lead to pushback from team members.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To streamline smoke testing, it helps to have an easily accessible library for tracking and managing smoke tests. And this is where Plutora comes into play.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Plutora offers a one-stop-shop for application lifecycle management data. It essentially serves as a data mart with powerful analytics tools for tracking tests and matching them with correlating user requirements and projects.\\xa0\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"With the help of Plutora, all stakeholders can access tests and data in a single repository. In this light, Plutora can serve as a single source of truth, improving communication and keeping workflows moving forward.\\xa0\\xa0\",/*#__PURE__*/e(\"br\",{}),\"Add it all up and Plutora is revolutionizing the way DevOps managers and teams approach software creation. For a closer look at how Plutora can help optimize your strategy, \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now?ref=nav-bar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"request a demo today\"})}),\".\"]})]});export const richText1=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"DevOps teams are under rising pressure to deliver higher-quality software in less time and with fewer resources. This is no easy task any way you slice it.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In order to succeed in today\u2019s competitive, fast-paced market, your team needs to work intelligently and maximize resources. With this purpose in mind, it helps to have a centralized system in place for observing and managing daily workflows and communicating with team members. By doing so, you can help organize and improve operations while increasing output.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In response, a growing number of DevOps managers are using flow modeling to streamline their production environments. Simply put, flow modeling can help keep software projects on track throughout the delivery process and improve visibility between managers and team members. What\u2019s more, flow modeling also makes it easier to collaborate and develop software together as a team.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This post offers a primer on flow modeling and explores some ways it can help your company improve how it brings products to market. Keep reading to learn more about flow modeling, its benefits, and some of the KPIs you should track to make the most out of flow modeling.\\xa0\"})]});export const richText2=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is Flow Modeling?\"}),/*#__PURE__*/e(\"p\",{children:\"Flow modeling is the process of tracking and monitoring production workflows from end to end. The main objective of flow modeling is to remove complexity from the software production process.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"With flow modeling platforms, you can visualize your ever-changing production environments. At the same time, you are also able to collect and apply business intelligence to improve workflows and boost environment utilization. In short, flow modeling solutions take the guesswork out of managing software development.\\xa0\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Flow modeling is also a fundamental part of \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/business-intelligence/value-stream-management-flow\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"value stream mapping\"})}),\", which involves outlining how you deliver value to customers. With flow modeling, you go a step further and track specific processes on a granular level to ensure every task is directly furthering the project and adding value.\\xa0\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"As such, flow modeling typically takes place within a value stream mapping platform. The mapping platform that you select should ideally contain smart dashboards that provide contextual data and insights about specific workflows, systems, and roles. It\u2019s also critical to find a platform that provides real-time production updates so that you always have a clear and up-to-date overview of your department.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"The Benefits of Flow Modeling\"}),/*#__PURE__*/e(\"p\",{children:\"As you can see, flow modeling serves as a central dashboard for DevOps. It\u2019s a proven way to gain better control over your delivery performance and make better decisions at a faster clip.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"With all this in mind, here are some of the ways companies benefit by using flow modeling.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Identify Bottlenecks\"}),/*#__PURE__*/e(\"p\",{children:\"Production doesn\u2019t always go according to plan. Bottlenecks can stem from a variety of issues, like outdated practices and procedures, legacy technologies, and a lack of understanding of roles and responsibilities. These types of inefficiencies drive up the time and cost of production. Making matters worse, it isn\u2019t always easy to identify them.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Without a comprehensive flow modeling plan in place, you are stuck using your judgment when it\u2019s time to fix bottlenecks. On the other hand, flow modeling enables you to automate the process and quickly pinpoint where bottlenecks are occurring in the software delivery pipeline. After that, you can make impactful decisions using data to support your actions.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To illustrate, you may notice that a project is running behind schedule and might need to request more developers from management to get things back on track. Using a flow model dashboard,\\xa0 you can produce a report to highlight the problem and potentially make the case to hire more team members or pull workers from other projects to help.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Plan More Accurately\"}),/*#__PURE__*/e(\"p\",{children:\"Product managers need to have a clear understanding of available resources when they plan production schedules. The last thing you want to do is prioritize a development project only to discover that you lack the resources to pull off the job.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"With a flow model dashboard, you can easily assess your production environment and have an easier time planning sprints. Over time, your department will operate leaner and more efficiently.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Integrate Intelligently\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"IT managers are increasingly looking to break down barriers and bring developers closer together. For example, DevOps and security teams are now merging into DevSecOps functions across many organizations.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"However, when this happens, integration can pose its share of challenges. When your team integrates workflows, you need to be very careful about where, when, and how you make changes to avoid creating excess disruptions and delaying projects. Getting DevSecOps off the ground can take some time and require an adjustment or cultural shift.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By offering direct visibility into production cycles, flow modeling makes it easier to implement DevSecOps and make timely decisions and strategic changes to workflows.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Simplify Release Management\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Many managers are still using traditional spreadsheet-based release management workflows, which require manual creation, updates, and distribution. Unfortunately, the process is time-consuming, error-prone, and insecure.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"With a flow modeling dashboard in place, you can immediately gain a bird\u2019s-eye view of all projects across your different value streams. This enables you to simplify the release management process considerably.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Have a Single Source of Truth\"}),/*#__PURE__*/e(\"p\",{children:\"Software production can be very chaotic, especially when large teams are involved. It becomes even harder when you have multiple disparate management spreadsheets and progress reports floating around.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Flow modeling helps teams simplify operations by acting as a single, centralized source of truth. It can serve as the sole document for measuring and reporting progress, ensuring everyone is working off the same information.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Top Flow KPIs for Flow Modeling\"}),/*#__PURE__*/t(\"p\",{children:[\"In order to maximize flow modeling, there are several \",/*#__PURE__*/e(n,{href:\"https://go.plutora.com/value-stream-flow-metrics\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"key performance indicators\"})}),\" you need to track on a daily basis. With that in mind, let\u2019s take a look at some of the top KPIs that you need to monitor across your overall production environment to get the results you\u2019re hoping for.\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Lead Time\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Lead time runs from the time you commit code to the time you put it into production. By tracking lead time, you can determine what\u2019s slowing down your workflows and take action from there.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Mean Time to Repair\"}),/*#__PURE__*/e(\"p\",{children:\"Meantime to repair refers to how long it takes to restore service during an unplanned disruption in the value stream. Common disruptions include power outages, cybersecurity incidents, and personnel shortages. The lower your mean time to repair, the better off you are.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Deployment Frequency\"}),/*#__PURE__*/e(\"p\",{children:\"Deployment frequency refers to how often you deploy code into production. This metric makes it easy to determine whether you\u2019re shipping updates as quickly as you\u2019d like to.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Work Breakdown\"}),/*#__PURE__*/e(\"p\",{children:\"Work breakdown is the value stream\u2019s overall proportion of work item types. This helps you ensure projects stay on track and that everyone is equally responsible for tasks.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Get the Total Picture of Your Value Chain With Plutora\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s survival of the fittest in the software industry today. As such, companies simply can\u2019t afford to have inefficient production environments.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Good news: By using a value stream management and flow modeling platform like Plutora, you can immediately identify issues that are slowing down your operations and discover the root cause of delays. Using this data, you can optimize product delivery and bring better products to market faster.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Plutora streamlines production both immediately and over time. The platform analyzes your ongoing production habits and gives you the insights you need to spot trends and make informed decisions. Plutora\u2019s dashboards can also work with your existing tools for easy access to current workflows. That being the case, you don\u2019t need to worry about replacing any existing technologies.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"At the end of the day, DevOps management doesn\u2019t have to be a nightmare. With the right modeling system in place, you and your team can have a much easier time collaborating and meeting deliverables.\\xa0\",/*#__PURE__*/e(\"br\",{}),\"To experience how Plutora can help your team with flow modeling, \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now?ref=nav-bar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"take the platform for a spin\"})}),\".\"]})]});export const richText3=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"As the scope of software development broadens, software development enterprises are constantly faced with complex problems. This leads to the recruitment of many software developers and engineers. These developers join the firm and make use of their expertise to find solutions.\"}),/*#__PURE__*/t(\"p\",{children:[\"Growing teams is a great way to go for the firm, as all hands are on deck. But it also comes with a major shortcoming: the fact that there is little or no control over the diverse teams of developers and engineers or how to manage their inputs and contributions toward solving the complex problem at hand. This factor costs lots of time before any major breakthrough comes to the forefront. Thus, it reduces the value such a firm delivers to the client at large. To mitigate this challenge faced by software development, many companies adopt frameworks like\",/*#__PURE__*/e(n,{href:\"https://www.scrum.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" scrum\"})}),\" and\",/*#__PURE__*/e(n,{href:\"https://www.scrumatscale.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Scrum@Scale\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In this article, we'll understand the Scrum@Scale framework. This includes how it can aid software firms, especially the larger ones, in maximizing the use of scrum. We'll also explore why you need to scale Scrum and how to scale it. But before we dive into this, we'll look into the parent framework scrum and all it entails.\"})]});export const richText4=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is Scrum?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.scrum.org/resources/what-is-scrum\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:/*#__PURE__*/e(\"strong\",{children:\"Scrum\"})})}),\" is a framework designed to help teams and organizations provide adaptive solutions to complex problems and, by so doing, create values and achieve team goals. This framework was developed by Ken Schwaber and Jeff Sutherland. Scrum is used to bring to light the effectiveness of an organization\u2019s current management method, pointing out what needs improvements.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Scrum was built not only to give detailed instructions to users but to improve their experience. This phenomenon is what is termed in the scrum theory as \",/*#__PURE__*/e(\"strong\",{children:\"empiricism\"}),\". It buttresses the point that knowledge is obtained from experience and that careful observation is the foundation for smart decision-making. All these are what enable scrum to assist firms in reducing waste of time and talent and focusing on those tasks that are of more importance toward achieving the set goals of the firm.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Scrum Team\"}),/*#__PURE__*/t(\"p\",{children:[\"Making use of the scrum framework entails the engagement of some group of people within and outside your firm. These people have the skills to tackle the problem at hand and also have the willingness to acquire new skills if the need arises. This group is the \",/*#__PURE__*/e(\"strong\",{children:\"scrum team\"}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"A scrum team is fundamentally a small unit of professionals, usually no more than 10 individuals. The following people make up the scrum team: the \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/product-owner-understanding-role-responsibilities\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"product owner\"})}),\", developers, and a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/roles-and-responsibilities-guide-to-the-scrum-master-role\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"scrum master\"})}),\". Each of these people who make up the team has their roles and responsibilities specified beforehand. This is to avoid clashes of interest and time waste. We'll discuss each role more in-depth in the following sections.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Is Scaled Scrum?\"}),/*#__PURE__*/e(\"p\",{children:\"Following the mass acceptability and implementation of the Scrum framework by various firms and the surge of more complex problems, the scrum framework, as it is, couldn't undertake these tough jobs, so organizations needed a framework that could. Recall that a typical scrum team consists of 10 or fewer members. This team alone can't take on or solve these complex problems as they sometimes require a larger number of professionals to tackle them.\"}),/*#__PURE__*/e(\"p\",{children:\"Now, how do we get this to work while implementing the ever-effective scrum framework in order to create value? Scaling scrum happens to be the answer. To scale scrum, organizations make use of the Scrum@Scale framework. You can liken the Scrum@Scale framework to an extended scrum framework. It aims at helping larger organizations implement scrum. This also harnesses its values despite the high number of teams they possess. It aids these organizations in running these teams effectively while maintaining the values and tenets of the Scrum framework.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Scale Scrum\"}),/*#__PURE__*/e(\"p\",{children:\"Consider that large organizations create products and render services that they need multiple teams to accomplish. As the number of scrum teams increases within the organization, some issues that hinder productivity began to emerge. These issues range from cross-team dependencies to duplication of tasks among the various scrum teams. This leads to the depletion of the quality of work done by each team and the efficiency of task delivery. All of these put the business's agility to level zero.\"}),/*#__PURE__*/e(\"p\",{children:\"Therefore, in order to mitigate these issues, the need for a framework that can manage the multiple scrum teams and help each team focus on prioritized goals without shifting the goalpost from the scrum methodology was eminent. The best possible way to achieve this goal was to scale the scrum framework to accommodate this need faced by large organizations.\"}),/*#__PURE__*/e(\"h2\",{children:\"Understanding the Scrum@Scale Framework\"}),/*#__PURE__*/e(\"p\",{children:\"Just like the parent scrum framework, the Scrum@Scale framework runs on almost the same structure, theory, value sets, and pillars. These scaled elements vary from the team structures to the events as well as the organizational structuring, which enables the teams to function effectively. For instance, some organizations claim to employ large teams, between 50 to 100 scrum teams for a project. However, it's not scaling scrum if these teams don't showcase the attributes of a scrum team that's working together uniformly. Let's explore what scaled scrum entails, ranging from a Scrum@Scale team structure to Scrum@Scale roles.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scrum@Scale Team Structure\"}),/*#__PURE__*/e(\"p\",{children:\"The scaled scrum team is just like the scrum team, but for large teams. For example, depending on the number of scrum teams working on a project, the teams are split into the scrum of scrums team structure or the scrum of scrum of scrums team structure.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scrum of Scrums (SoS)\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(\"strong\",{children:\"Scrum of Scrums\"}),\" technique is useful when scaling between four to five scrum teams to function together. Recall that the scrum framework comprises a team of about 10 people. But a Scrum of Scrums team can consist of up to 50 people. Just like the Scrum framework, the Scrum of Scrums technique allows the team to carry out daily standups or meetings. However, this time these meetings consist of multiple teams that are working together.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Scrum of Scrum of Scrums (SoSoS)\"}),/*#__PURE__*/t(\"p\",{children:[\"As the organization becomes larger and the problem they're tackling becomes more complex, there's a need to employ the services of more teams. A \",/*#__PURE__*/e(\"strong\",{children:\"Scrum of Scrum of Scrums\"}),\" is a structural arrangement within the scrum framework that manages multiple scrums of scrums.\"]}),/*#__PURE__*/e(\"p\",{children:\"Daily standups in the scaled scrum structure shouldn't be greater than 15 minutes. In most cases, a member of the development team, as well as the team master of each team, represents the other team members during standup. These standups tend to discuss the progress of the team and also release them from blockers they're facing.\"}),/*#__PURE__*/e(\"h2\",{children:\"Scrum@Scale Roles\"}),/*#__PURE__*/e(\"p\",{children:\"You need human resources to complete tasks, especially in the tech industry. For individuals to work together in harmony, they must first understand their roles. Just like in the scrum framework, in the Scrum@Scale framework, we have roles like the scrum master, product owners, and developers. They are as follows.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scrum Masters\"}),/*#__PURE__*/e(\"p\",{children:\"Scaling scrum masters and their roles can be seen in these forms: scrum of scrums master (SoSM) who works with the scrum of scrums team and then the Scrum of Scrum of scrums master (SoSoSM) who is concerned with the scrum of Scrum of Scrums team. You can assign this to any Scrum master from any of the Scrum teams or independent personnel with expertise.\"}),/*#__PURE__*/t(\"p\",{children:[\"In scaling the role of the Scrum Master, there's a special team of scrum experts known as the executive action team (EAT). This team is responsible for making sure that scrum events are held and that Scrum roles are created and supported, as well as making sure that all the artifacts are created and presented to relevant people to make tackling the task smoother. The EAT is the powerhouse of upholding the scrum principles as they prepare guidelines for the scrum team. Together with the scrum masters or the SoSM and the SoSoSM, they form the \",/*#__PURE__*/e(\"strong\",{children:\"scrum masters organization\"}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"Product Owners\"}),/*#__PURE__*/t(\"p\",{children:[\"Scaling the roles of product owners is important to reflect the reality while scaling scrum. For either level of the scaled scrum framework, be it the SoS or the SoSoS, there's a \",/*#__PURE__*/e(\"strong\",{children:\"product owners organization\"}),\". The product owners organization comprises all the product owners of the individual scrum teams. This product owners team generates a road map for the project and also monitors the metrics that give insight into the product and its marketability. For instance, product owners can utilize tools like \",/*#__PURE__*/e(n,{href:\"https://go.plutora.com/forrester-value-stream-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"value stream management solutions\"})}),\" to monitor metrics.\"]}),/*#__PURE__*/t(\"p\",{children:[\"They collectively work to eliminate any dependency raised by any team and, together with the scrum master team, create a generally accepted \u201Cdefinition of done\u201D for the task at hand. The head of the product owner's team is the \",/*#__PURE__*/e(\"strong\",{children:\"chief product owner \"}),\"whose responsibility is to coordinate the entire product owner's team and to set strategic visions for the product that satisfy the customer needs. The chief product owner is also in charge of creating a single comprehensive product backlog, which you can further break down to each team\u2019s product owners based on each team\u2019s specialty.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Scrum@Scale Events\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum@Scale events slightly differ from the events in the scrum framework. For instance, in the scrum framework, all members of the team can attend daily standups since it's a smaller team with no more than 10 team members. However, since the scaled scrum framework consists of larger personnel numbers, team representatives can represent their teams during standup.\"}),/*#__PURE__*/e(\"h3\",{children:\"Daily Scrum\"}),/*#__PURE__*/e(\"p\",{children:\"In this scaled version of the daily scrum event, at least one representative from each team must be present. It's a time to give a progress report as to what each team is up to, and it's still a meeting of 15 minutes or less in duration. This event provides solutions on how the teams can work together. The questions asked during daily meetings involve the following: what teams have worked on after the last meeting, what they'll work on next, and the blockers they have.\"}),/*#__PURE__*/e(\"h3\",{children:\"Sprint Retrospective\"}),/*#__PURE__*/e(\"p\",{children:\"This is still the same as the normal sprint retrospective of Scrum, but in this scaled version, it's the scrum masters of all the individual teams who come together. They analyze what has been done in the sprint and discuss what can be done in the next sprint to make improvements inching toward the overall product goal. This is as opposed to the event in the scrum framework where all the members of the scrum team come together.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to Scale Scrum\"}),/*#__PURE__*/e(\"p\",{children:\"Scaling scrum is important when you're dealing with large teams and want to maximize productivity. Just like we discussed earlier, hiring lots of teams to work on a project isn't the same as scaling scrum. For instance, if we have a large team that's working on a web application, dividing personnel to work on different aspects of the product may sound like a good idea. For example, you can divide personnel into the business side and the development side. On the development side, you can also divide personnel into front-end engineers and back-end engineers.\"}),/*#__PURE__*/e(\"p\",{children:\"But what happens when the back-end engineer team's feature isn't ready? Does it mean the front-end engineer team will also halt? These are the questions that prompted the birthing of the scrum framework. In the scrum framework, a team works together in harmony to deliver a product. Notice how the scrum framework involves only a single team.\"}),/*#__PURE__*/e(\"p\",{children:\"What happens if the team needs to deliver different features in the web application? This means more personnel. Also, the personnel will need to focus on their different features while still working together.\"}),/*#__PURE__*/e(\"p\",{children:\"This is scaling Scrum. To scale scrum, organizations not only have to employ more personnel, but they should also have different teams working together. Let's explore the difference between scaled scrum and the scrum framework more in-depth.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scrum vs. Scaled Scrum\"}),/*#__PURE__*/e(\"p\",{children:\"AttributeScrum frameworkScaled ScrumTeam sizeThis consists of a single team of no more than 10 members.This consists of multiple teams that work together to deliver a product. In scaling scrum, the team size isn't limited to 10 members.Team rolesThe roles of team members in the scrum framework are split into product owners, scrum masters, and developers.While teams in scaled scrum are still split into similar roles as the scrum framework, there's also the chief product owner and overall head of scrum master.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scaling Scrum Values\"}),/*#__PURE__*/e(\"p\",{children:\"In scaling scrum, teams should also adopt certain attitudes and values. The usage of the scrum framework is built upon five values. These values dictate the work ethic of all members of the scrum team. They are as follows:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Focus: \"}),\"Scrum demands that anyone working within its framework should focus on the task. This is the major reason why the scrum framework tackles one goal at a time so as to eliminate side distractions on the part of the team members.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Courage: \"}),\"Scrum demands that any user of its framework must be courageous, as it is out to take on complex problems facing enterprises by providing adaptive solutions that create much value for the organization.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Commitment: \"}),\"When working with the scrum framework, teams must show commitment. This is because every second counts, and teams must complete tasks on time.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Openness: \"}),\"Scrum works within the team, and the effectiveness and efficiency of any team lies in each team member being open about what they're working on. This promotes cooperation and trust, thereby fast-tracking the team's progress.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Respect: \"}),\"The scrum framework abhors disrespect of any kind toward the members of the team, as well as the organization it's working for. Respect breeds mutual understanding and promotes unity, which, in turn, creates a favorable working environment for all and sundry. This is what scrum stands for, and any scrum team member must live up to these expectations.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Scrum Pillars\"}),/*#__PURE__*/e(\"p\",{children:\"By upholding these values, the scrum team receives a sense of direction as regards their actions and behaviors during the period of work under the scrum framework. The scrum team must ensure that all decisions and the manner in which scrum is being used reinforce these values if the maximum impact will be made. When you take all these into account, the three cardinal pillars of scrum stand tall. These pillars are as follows:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Transparency: \"}),\"This entails that every task must be visible to everyone doing the job and as well as those on the receiving end. For effective workflow, teams can't hide things from each other. This is what scrum stands for.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Inspection: \"}),\"Scrum believes in the frequent inspection of the work at hand. This helps to pick out errors or any undesirable changes and fix them before forging ahead.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Adaptation: \"}),\"This involves the process whereby the team members make adjustments to the mannerism of their works as suggested by the results of the recent inspection.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/t(\"p\",{children:[\"Cutting costs and duration of time while creating value is a top business priority for large organizations. With this in mind, employing the right framework to achieve this goal is the next priority. Having understood the scrum framework and its scaled version Scrum@Scale and what they stand for, it's paramount to implement the framework in your organization. Looking for the right platform to implement scrum or Scrum@Scale as well as other Scaled Agile Frameworks (SAFe) based on your organization\u2019s peculiarity and need? Check out \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plutora\"})}),\" and its leading \",/*#__PURE__*/e(\"strong\",{children:\"Value Stream Management Platform\"}),\" dedicated to delivering better software solutions faster. Feel free to sign up for a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now?ref=nav-bar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"personalized demo\"})}),\".\"]})]});export const richText5=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"In our modern world, businesses are constantly generating data in a variety of ways. Such data sources include on-premises databases, cloud-based business services, social media, and more. Indeed, successful businesses are data-driven and take advantage of this large amount of data they generate. This enables them to make well-informed and sensible business decisions. And this is where a business intelligence dashboard comes in.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Using a business intelligence dashboard, business leaders can go over insights generated and then analyze data gathered from different sources instead of going over a plethora of individual reports. This enables them to understand how customers are reacting to a product. They can also use this information to gauge customer satisfaction, monitor sales revenue, and track other key performance indicators (KPIs).\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In this post, we'll delve into what a business intelligence dashboard is, why you need one, and the best practices you should follow when building one.\\xa0\"})]});export const richText6=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Are Business Intelligence Dashboards?\"}),/*#__PURE__*/e(\"p\",{children:\"A business intelligence dashboard is a visualization tool that consolidates data generated by a business and presents insights that are useful for decision-making. These insights could come in the form of correlations, patterns, or changes over a period of time.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The idea behind these dashboards is to present data in a way that's easy to interpret by anyone and understand at a glance. It's critical to communicate insights in a very simple way. Basically, this puts data in perspective so that no matter the skill level of the viewer, they can easily grasp and make sense of the message being passed along.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Qualities of a Good Dashboard\"}),/*#__PURE__*/e(\"p\",{children:\"There are a few qualities you should look for in a business intelligence dashboard. A good business intelligence dashboard should\\xa0\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"be easy to understand,\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"communicate information quickly,\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"tell a story,\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"be interactive,\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"have a simple design, and\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"continue to change.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"You'll see why these qualities are important in the next sections. First, let's see what a business intelligence dashboard can offer you.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Do You Need a Business Intelligence Dashboard?\"}),/*#__PURE__*/e(\"p\",{children:\"Business intelligence dashboards are useful for an abundance of reasons. We'll discuss a few of them here.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Easily Communicate Business Insights\"}),/*#__PURE__*/e(\"p\",{children:\"One major reason you would want to create a business intelligence dashboard is the ease with which they communicate business insights. It's unquestionably easier to interpret percentages presented visually in a pie chart than to present percentages presented in a simple table. We can easily derive the insights or ideas being communicated at a glance through visualization.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Make Smarter Business Decisions\"}),/*#__PURE__*/e(\"p\",{children:\"Furthermore, the best business decisions are backed up by facts and figures. It becomes easier to make these decisions as businesses go through changes and improvements over time. But it's even easier to tell if investments are paying off when they are presented properly.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"These insights, when observed and discussed, can help business leaders understand what changes should be made, what new strategies should be implemented, what department is most productive, or what tools should be discarded or made available.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Monitor KPIs\"}),/*#__PURE__*/e(\"p\",{children:\"KPIs may vary from company to company. It's important to have a benchmark in mind for each of these KPIs to ascertain when progress is being made and point out indicators of growth within the company.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"That is to say, including these set targets in your dashboard gives your audience an illustrative means to understand and ascertain whether the company is achieving its goals.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Determine Company Performance and Employee Success\"}),/*#__PURE__*/e(\"p\",{children:\"Dashboards are helpful when monitoring employee performance and assessing the company's overall performance at various points in time. These could be monthly, quarterly, or yearly evaluations. Altogether, these metrics help you understand which departments are most productive, if they are meeting their targets, or if you should adjust those targets. With this information, leaders can ask the right questions, know if employees are putting in the work to improve the overall efficiency of the production processes, and know where to invest more resources.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Enable Anyone to Get Business Intelligence Insights\"}),/*#__PURE__*/t(\"p\",{children:[\"Business intelligence dashboards are easy to use. Companies are always changing, innovating, and in that way constantly generating new data. Because of this, dashboarding is an iterative process. To spare your business intelligence analysts and other users the stress of creating new visualizations from scratch, consider investing in a tool that provides automation, like \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plutora\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Monitor Trends and Changes Over Time in Your Business\"}),/*#__PURE__*/e(\"p\",{children:\"Business intelligence dashboards are useful for spotting and monitoring patterns and trends. In our rapidly evolving world, it's important to stay abreast of these trends and be ready to adopt new strategies. When tracking overall company performance, check company growth, the nature of the market, how customers are reacting to your product, and churn rate.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Improve Sales and Marketing Strategies\"}),/*#__PURE__*/e(\"p\",{children:\"A business intelligence dashboard enables you to spot sales and marketing trends through data, consequently helping with decision-making. Once you know about these trends, you'll be able to encourage new ideas on how to improve existing processes or to learn from practices that worked well in the past.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Business Intelligence Dashboard Best Practices\"}),/*#__PURE__*/e(\"p\",{children:\"Given these points, you now understand how beneficial business intelligence dashboards are.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Next, we'll be discussing best practices to follow when building your business intelligence dashboard.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Identify Which Ideas You Need to Convey\"}),/*#__PURE__*/e(\"p\",{children:\"Before beginning to build a dashboard, you should have an idea of what type of information you want your viewers to take a look at. Viewers should be able to interpret these ideas at a glance. What insights are you trying to pass along? It's important to take note of these and consider the type of data you're working with. That way, you can identify how to present them in a way that is both interactive and engaging while taking note of correlations and trends.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Know the Right Dashboard to Use\"}),/*#__PURE__*/e(\"p\",{children:\"Once you know what insights you want to share, you need to figure out what dashboard is appropriate for the type of data you're trying to use.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"For example, if you're working with release management data, you might use a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/business-intelligence/release-management-kpi\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"release management KPI dashboard\"})}),\". Whereas if you're working with value stream data, you might opt for a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/business-intelligence/value-stream-management-flow\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"value stream flow metrics dashboard\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Release Management KPI Dashboard\"}),/*#__PURE__*/e(\"img\",{alt:\"Release Management KPIs\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,gpCqBKbV907HyQGGOs0VPIk84h4.jpg?originalFilename=Release-Management-KPIs-Dashboard-B-2-1024x701.jpg\",src:\"https://framerusercontent.com/images/gpCqBKbV907HyQGGOs0VPIk84h4.jpg\",srcSet:\"https://framerusercontent.com/images/gpCqBKbV907HyQGGOs0VPIk84h4.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/gpCqBKbV907HyQGGOs0VPIk84h4.jpg 1024w\"}),/*#__PURE__*/e(\"p\",{children:\"Using a release management KPI dashboard offers you the benefit of monitoring patterns in your releases over time. This enables you to stand out in the DevOps world as you continuously improve your releases and track changes and other metrics related to your releases easily, thereby easing your decision-making processes.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Value Stream Flow Metrics Dashboard\"}),/*#__PURE__*/e(\"p\",{children:\"A value stream metrics flow dashboard will enable you to deliver more value to your customers as you monitor your value streams and also have a better understanding of how to improve value delivery, plan, and make better investment decisions.\\xa0\"}),/*#__PURE__*/e(\"img\",{alt:\"Value Stream Flow Metrics\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,4mb2lMny55XZHeECnO2WxNG5cOM.png?originalFilename=SS-Flow-Metrics-1024x505.png\",src:\"https://framerusercontent.com/images/4mb2lMny55XZHeECnO2WxNG5cOM.png\",srcSet:\"https://framerusercontent.com/images/4mb2lMny55XZHeECnO2WxNG5cOM.png?scale-down-to=512 512w,https://framerusercontent.com/images/4mb2lMny55XZHeECnO2WxNG5cOM.png 1024w\"}),/*#__PURE__*/e(\"p\",{children:\"This dashboard brings together data from insights and analysis, portfolio and backing, continuous integration, continuous testing, and continuous delivery into one space. It also analyzes how changes in all these are affecting your business and what important moves you should make going forward.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Depending on your needs, you may need a different type of dashboard. \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/business-intelligence\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plutora\"})}),\" provides more than 15 dashboards with customizable options that make it easy to know what dashboard you should use.\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Pick the Right Visualization Tool\"}),/*#__PURE__*/e(\"p\",{children:\"While it's important to use the right visualizations, there are also metrics and dimensions to consider.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The visualizations we use are dependent on the type of data available. We have visualizations to show comparisons, relationships, compositions, and distributions.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"For comparisons, we usually make use of bar charts, line charts, column charts, or area charts. In a case where we want to show relationships, we can make use of scatter plots. To display composition, we can make use of pie charts, donut charts, treemaps, or stacked bar/column charts. And for distributions, we can make use of histograms or box plots.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Choosing the right visualization is essential to conveying a story with your data.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Remember That Storytelling Is Key\"}),/*#__PURE__*/e(\"p\",{children:\"Storytelling is an important part of dashboarding, as this keeps your viewers engaged enough to understand the insights you're sharing. A good story backed by the right visuals goes a long way. Viewers typically read from the top left of your page to the bottom right. The points you're trying to communicate through your charts should flow through this pattern.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"And the best storytellers are the ones who understand their audience, which brings us to the next point.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Understand Your Audience\"}),/*#__PURE__*/e(\"p\",{children:\"When planning your insights, you need to read the room. Who you're presenting to should determine the nature of your graphs. Someone who isn't that knowledgeable about visualizations will certainly have a tough time understanding what you're presenting if you use complex charts and graphs. Know your audience and use visualizations you feel they can easily comprehend.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Update Your Dashboards Regularly\"}),/*#__PURE__*/e(\"p\",{children:\"Dashboarding is an iterative process. With data constantly being generated and trends constantly changing, it's important to review and update dashboards. This is another process that has been taken care of by Plutora, which seamlessly integrates into your workflows and gives you real-time insights from your data.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Tips for Working With Business Intelligence Dashboards\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to the best practices outlined above, I want to share a few tips you can keep in mind when working with business intelligence dashboards:\\xa0\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Avoid too much information. Don't try to crowd too many visualizations on one page. Select the necessary visualizations for your dashboard.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Don't use too many colors. Using too many colors makes the visualizations distracting. It's important to use one color scheme. In a case where you are differentiating departments, for example, it might make sense to use green for visualizations for marketing-related data or red for sales data.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Remove nonessential components or features from your visualizations. For example, these could be in the form of unnecessary labels or gridlines.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"In a case where there are decimals or large figures, you can consider rounding these numbers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Make use of very clear labels.\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Unlock Your Potential With a Business Intelligence Dashboard\"}),/*#__PURE__*/e(\"p\",{children:\"Business intelligence dashboards are a pleasant way to display your company data and communicate insights for decision-making. Following these guidelines and tips will help you create a dashboard your target audience can easily understand and understand the message you're trying to pass along.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Plutora makes this easy for you by providing customizable dashboards depending on what you need. They also give you the option to customize your dashboards. These dashboards work easily with existing tools and integrate with workflows.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"To learn more about dashboards, you can also check out \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/bi-dashboards-a-definition-with-detailed-examples\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"this post\"})}),\" or check out our \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/business-intelligence/business-intelligence-dashboards\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"powerful dashboards page here\"})}),\". \"]})]});export const richText7=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h6\",{children:\"When it comes to environments, there's not much mystery about production: that's where the real application lives and users can access it. The trouble is with the other environments: development, staging, QA, pre-prod...There seems to be no shortage of new ones. This post is part of a series that will tackle the main environments used in the software development life cycle, and today we'll cover the development environment.\"}),/*#__PURE__*/e(\"p\",{children:\"So, let's start by making this abundantly clear: we're not talking about an integrated development environment, or IDE! This post isn't about dev tools per se, but about environments as a metaphorical \\\"place\\\" where developers can implement and test their features in an efficient and safe way.\"}),/*#__PURE__*/e(\"p\",{children:\"We'll start by defining development environment, explaining its purpose, and giving some examples to keep in mind while you plan. After that, we'll go a bit deeper, exploring some of the best practices that a good dev environment ought to follow. Let's get started.\"})]});export const richText8=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Development Environment: The Fundamentals\"}),/*#__PURE__*/e(\"p\",{children:\"Let's open by exploring the what-why-how of development environments.\"}),/*#__PURE__*/e(\"h3\",{children:\"What Is a Development Environment?\"}),/*#__PURE__*/e(\"p\",{children:\"A development environment is the space where developers can work, experiment, and test without worrying they'll interfere with the experience of real users.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, software being something intangible, when we talk about \\\"space\\\" we don't mean a physical place you can walk into. Instead, we're talking about a set of services, infrastructure pieces, configurations, and rules that, together, make up this scenario where developers can do their work.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h3\",{children:\"Why Use a Development Environment?\"}),/*#__PURE__*/e(\"p\",{children:\"In a nutshell, a development environment allows software developers to create, run, and test their application code in a way that's adequately realistic and safe. If that still sounds too vague, let's go for more specific examples.\"}),/*#__PURE__*/e(\"p\",{children:\"Virtually all non-trivial applications use some form of database. So, developers also need a database to test their code against when working. Besides databases, applications commonly talk to a variety of services: APIs, message brokers, observability services, and so on.\"}),/*#__PURE__*/e(\"p\",{children:\"During development, it's important there's something simulating or replacing those dependencies. Here's why:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"User experience: Developers shouldn't interact with the real database/APIs/etc., so they don't create problems in the real production app.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cost: By interacting with the real services, the organization might be incurring costs. There's no need to incur those costs during development.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Safety/privacy: Interacting with the real dependencies might create security and privacy concerns.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"How Do You Implement a Development Environment?\"}),/*#__PURE__*/e(\"p\",{children:\"When it comes to how you create a development environment, it all depends on the specifics of your needs, the dependencies your code relies on, the size of your team, the maturity of your infrastructure, and so on.\"}),/*#__PURE__*/e(\"p\",{children:\"In its most basic form, the development environment is simply the developer's machine itself. With the popularization of Docker, it became relatively easy to create on-demand, reproducible environments that you can fire up by running a single command. You could have, for instance, a setup composed of three images: one for your back-end API, another for your front-end app that consumes that API, and a third one for the database.\"}),/*#__PURE__*/e(\"p\",{children:\"Sometimes, this isn't enough and you need to move the dev environment out of developers' machines. When that's the case, it might make sense to leverage some of the infrastructures you already have to create the development environment. For instance, create development databases and provide those string connections for developers to use. Populate said databases with synthetic data or a slice of production data that's been properly masked/anonymized. Create mock APIs to avoid accessing the real one. In a nutshell: for every external dependency, create a development version your engineers can use safely.\"}),/*#__PURE__*/e(\"h2\",{children:\"Development Environment: A Few Best Practices\"}),/*#__PURE__*/e(\"p\",{children:\"We've just covered the fundamentals of test environments. You've learned what they are, why they exist, and how to implement one. Now, let's walk through some best practices to keep in mind when implementing a dev environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"Your Development Environment Should Be Fast\"}),/*#__PURE__*/e(\"p\",{children:\"Over the years, I've read some people arguing you should give developers slow machines so they'll be forced to write performant code. The way I see it, that's nonsense. Developer machines should have great performance, and that extends to the entire development environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"Your Development Environment Should Offer Isolation\"}),/*#__PURE__*/e(\"p\",{children:\"As a developer, I want to \\\"own\\\" my dev environment. That means I want to be able to do whatever I need in my environment without concern I'm breaking someone else's work. I want to be able to do structural changes to the database\u2014or even trash the whole thing if I'm feeling like it.\"}),/*#__PURE__*/e(\"p\",{children:\"That level of isolation is essential if you want to give your developers freedom to experiment and explore.\"}),/*#__PURE__*/e(\"h3\",{children:\"Your Development Environment Should Be Realistic, But Not That Much\"}),/*#__PURE__*/e(\"p\",{children:\"One of the most infamous phrases in software development is \\\"It works on my machine!\\\" I know I'm guilty of saying it. Such problems occur when the development environment and the production environment drift apart. I might have used a feature of .NET 6, but the production server doesn't support that version yet, and things break after I deploy. Or perhaps my PHP code requires an Apache module to be activated, and since the server doesn't have the module, the code doesn't run.\"}),/*#__PURE__*/e(\"p\",{children:\"We solve this problem by keeping the environments as close to each other as possible. Containers, mentioned earlier, are a great technology for enabling that.\"}),/*#__PURE__*/t(\"p\",{children:[\"Of course, your dev environment will never perfectly mirror the real world\u2014you won't have the same volume of requests, for instance\u2014and you shouldn't aspire for it to do so.\\xa0 When implementing a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"test data management strategy\"})}),\", for instance, there's really no need for you to duplicate your infrastructure costs in order to have the same amount of data you have in production.\"]}),/*#__PURE__*/e(\"p\",{children:\"In a nutshell, keep your dev environment as realistic as you need it to be for developers to run their code in a predictable and safe manner, but not more.\"}),/*#__PURE__*/e(\"h3\",{children:\"Your Development Environment Should Be Compliant\"}),/*#__PURE__*/t(\"p\",{children:[\"Last but not least, we have to talk about \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/what-is-compliance-management-and-how-do-you-get-started\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"compliance\"})}),\". We live in a post GDPR world, and more regulations inspired by it keep popping up. Preventing access to user data is actually a great reason for having dev environments in the first place. But since developers still need realistic data for testing, what are we to do?\"]}),/*#__PURE__*/e(\"p\",{children:\"Generally speaking, the options are two: synthetic data generation or production cloning (plus anonymization). Both have their pros and cons, but they solve the problem.\"}),/*#__PURE__*/e(\"h2\",{children:\"Development Environment: Understand It and Control It\"}),/*#__PURE__*/t(\"p\",{children:[\"Yes, I get it. We, developers, often speak in ways that might be confusing. There's so much jargon that it's often hard to keep up. But don't worry; with the right amount of help, you can become versed in developer-speak one term at a time. Already in this post, we've clarified the term \\\"development environment.\\\"As you've seen, the development environment can take many different forms, but at the end of the day, it serves the same purpose: to allow developers to create, experiment, and explore in a safe, compliant, and performant way. Along with \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/test-environment-management-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"test environments,\"})}),\" the dev environment is a crucial component of modern software development. All of these environments together\u2014when properly implemented\u2014enable organizations to deliver software quickly, without forgoing the quality the market demands.\"]})]});export const richText9=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h6\",{children:\"To visualize a production environment, imagine a new car rolling off the lot. When someone buys a new vehicle, the automobile is typically ready for the open road. Even so, the new car still requires plenty of ongoing monitoring and maintenance to ensure safety and operational efficiency to extend the vehicle\u2019s useful life.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"While production may be the very last stage of software development, that doesn\u2019t mean testing ceases altogether. Software, and particularly SaaS solutions that are continuously iterated upon, requires a hefty amount of analysis and refining.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Read on to learn what a production environment is, what it means for developer teams, and how it\u2019s different from some other stages of the software development pipeline.\\xa0\"})]});export const richText10=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is a Production Environment?\"}),/*#__PURE__*/e(\"p\",{children:\"In short, a production environment is a live application that users can access and interact with. In other words, this is where users see and experience the most current version of the software.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By the time software reaches the production stage, it should have gone through planning, staging, and preproduction testing. The application should also have a stable networking environment in place to support live users and to enable rapid scalability.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"What Takes Place During Production?\"}),/*#__PURE__*/e(\"p\",{children:\"An application doesn\u2019t have to be perfect to go into production. But it should be a complete piece of software, which means the application should conform to the project\u2019s current specifications, have strong security components, and have adequate networking resources in place.\"}),/*#__PURE__*/e(\"p\",{children:\"Regardless, Murphy\u2019s Law states that anything that can go wrong will go wrong. This holds true even with the most comprehensive preproduction development and testing tools on the market today. And for this reason, the hard work of testing and refining software must continue during production, which is exactly what DevOps teams do.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"With all this in mind, here\u2019s a closer look at some of the processes that take place once software moves into a live production environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"A/B Testing\"}),/*#__PURE__*/e(\"p\",{children:\"A/B testing is a strategy you can use to compare two different versions of the same app.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To run an A/B test, simply split users into two groups. The A group receives the latest version of the app, while the B group is given the variation. From there, you can compare user behavior and make an informed decision about which version gets better results.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"A/B testing is easier when using feature flags, or toggles, that let you switch features on and off. Thanks to A/B testing, DevOps teams can iterate with confidence because they have data that tells them exactly what their customers want.\"}),/*#__PURE__*/e(\"h3\",{children:\"Canary Testing\"}),/*#__PURE__*/e(\"p\",{children:\"A major update can be a stressful experience for developers. In some cases, there\u2019s no telling how users will react to a change. It\u2019s not always pretty. If a major change is unpopular, it could cause people to abandon the app or complain, leading to lost profits, negative reviews, and fewer investors.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Canary testing is a strategy where you slowly roll out updates to groups of users so that you can test how they respond. While this form of testing takes a bit longer, it\u2019s generally a safer way to roll out updates.\"}),/*#__PURE__*/e(\"h3\",{children:\"User Acceptance Testing (UAT)\"}),/*#__PURE__*/e(\"p\",{children:\"UAT is a type of analysis where you check to make sure the software can handle real-world challenges and meet user expectations.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"This type of testing traditionally happens before software goes into a live production environment. However, a growing number of DevOps teams are pushing user acceptance testing to the live production stage.\"}),/*#__PURE__*/e(\"p\",{children:\"By taking this approach, you can test in small phases to live groups of users. This strategy shortens production cycles but adds more postproduction work.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Application Monitoring\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In addition to testing features and functionality, you also have to make sure an application is working at an optimal level. This is particularly important in today\u2019s competitive market, where users have high expectations.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Application monitoring involves testing how users interact with the software and how well the software handles requests. For example, you may find that an application isn\u2019t performing well in a specific market because it lacks supporting resources like bandwidth and connectivity. Or you may discover that one of the application\u2019s main features isn\u2019t working.\"}),/*#__PURE__*/e(\"p\",{children:\"Through real-time application monitoring, you can detect performance issues and prevent errors from impacting operations.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Security Monitoring\"}),/*#__PURE__*/e(\"p\",{children:\"Most DevOps teams are now shifting left and incorporating security into the framework of their applications. DevSecOps can significantly reduce security vulnerabilities and lower production costs.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Despite this, security needs can change over time. Configuration drift, bugs, and emerging security threats can threaten your applications and potentially expose private data and workloads to unauthorized individuals. As such, real-time security monitoring is imperative. It\u2019s worth investing in a security automation tool to quickly detect and remediate security vulnerabilities.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Is Production Different from Staging?\"}),/*#__PURE__*/e(\"p\",{children:\"Before software goes into production, it typically passes through a staging, or testing, process.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"During \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/what-staging-environment-how-get-it-right\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"software staging\"})}),\", you run software through a production simulation. A staging environment doesn\u2019t necessarily have to be an exact replica of a live production environment. However, it helps to have an environment that closely mirrors production so that you can get a sense of how the application will perform in real-world conditions.\"]}),/*#__PURE__*/e(\"p\",{children:\"During the staging process, software typically goes through wider and more comprehensive testing.\"}),/*#__PURE__*/e(\"h3\",{children:\"Smoke Testing\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Smoke testing is a type of analysis that lets you know whether a piece of software is stable and functional. During smoke testing, you check for critical functions and whether new features and updates are working properly.\"}),/*#__PURE__*/e(\"h3\",{children:\"Unit Testing\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"During unit testing, you determine whether individual functions or units are up to par and working as designed. Unit testing helps detect and avoid bugs.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"System Testing\"}),/*#__PURE__*/e(\"p\",{children:\"System testing is where quality assurance professionals check to see how different application components interact and function. There are a variety of checks, including regression, functional, recovery, migration, usability, and software and hardware testing.\"}),/*#__PURE__*/e(\"h3\",{children:\"Integration Testing\"}),/*#__PURE__*/t(\"p\",{children:[\"Integration testing occurs when you bring all your software modules together and test them as a single group. This form of testing helps evaluate system functionality and \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/what-is-compliance-management-and-how-do-you-get-started\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"compliance\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Chaos Engineering\"}),/*#__PURE__*/t(\"p\",{children:[\"Just as the name suggests, chaos engineering helps you get a sense of how an application will perform under various chaotic conditions. Software teams use chaos engineering to \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/what-is-devops-security-a-guide-with-best-practices\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"build resilient and secure apps\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Avoiding Errors in Production\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Despite the abundance of preproduction testing that typically takes place in a DevOps environment, it\u2019s common for defects to escape into production. This often happens because teams lack technical configuration details across applications, versions, dependencies, and components.\"}),/*#__PURE__*/t(\"p\",{children:[\"One of the best ways to prevent errors from slipping into production is to invest in a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"single test environment repository\"})}),\". With this type of solution in place, you can upload technical specs and details to a single area so that stakeholders can access them. This can help avoid confusion and prevent outdated or incorrect specs from impacting performance.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Introducing QuickStart Bundles from Plutora\"}),/*#__PURE__*/e(\"p\",{children:\"At the end of the day, managing production environments can be a tough task when you lack the right supporting tools. This can lead to risky, chaotic deployments and excessive rollbacks.\"}),/*#__PURE__*/t(\"p\",{children:[\"To make the job easier, Plutora now offers \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/plutora-offers-new-environment-quickstart-bundle\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Test Environment QuickStart bundles\"})}),\" that you can use to enhance your test environments. These bundles come with aggressive pricing and rapid implementations, enabling you to see results quickly.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"With Plutora, you can reduce defects, automate scheduling, and streamline communications. Additionally, you\u2019ll be able to accelerate application development and generate stronger ROI from your software projects. To start, check out our \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/test-environment-management-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"QuickStart packages\"})}),\". While you\u2019re at it, you can also \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"request a free demo\"})}),\".\"]})]});export const richText11=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Software teams are under pressure to deliver high-quality applications quickly and affordably. Of course, this is no easy task, especially when considering that software and networks are becoming exceedingly complex and distributed.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To improve the development process, a growing number of teams are implementing DevOps and site reliability engineering frameworks. DevOps, coupled with SRE, can enhance the production cycle and improve collaboration. These strategies help software teams operate with greater visibility and efficiency, ultimately enabling them to create stronger solutions.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"That said, there are some important differences between DevOps vs SRE. Let\u2019s take a closer look at how each of them works and how they complement one another.\\xa0\"})]});export const richText12=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is DevOps?\"}),/*#__PURE__*/e(\"p\",{children:\"DevOps is a popular software engineering methodology that brings development and operations together into a single unit. Essentially, it\u2019s a set of agile practices and tools that engineering teams use to automate workflows and expedite production cycles.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"DevOps is a big change from traditional software development, which tends to have significant silos. In a DevOps model, engineers cover a much wider range of tasks, including planning, development, testing, and operations, among other things.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"What Are DevOps Teams Responsible For?\"}),/*#__PURE__*/e(\"p\",{children:\"DevOps is more than just a workflow adjustment. It also requires making a cultural shift and prioritizing communication and collaboration.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In a typical DevOps environment, team members tend to wear multiple hats and contribute to various areas of production. With that in mind, here\u2019s a look at some of the central processes that DevOps teams focus their attention on.\"}),/*#__PURE__*/e(\"h3\",{children:\"Security Testing\"}),/*#__PURE__*/e(\"p\",{children:\"For many companies, DevOps is merging with security to create a strategy called DevSecOps, which involves testing for security vulnerabilities throughout the production process instead of waiting until the very end. This prevents vulnerabilities from winding up in production and lowers the cost of testing.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"It also helps DevOps engineers pay more attention to security during the development process, which reduces the likelihood vulnerabilities make it into production.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Testing\"}),/*#__PURE__*/t(\"p\",{children:[\"Continuous testing involves automating performance tests and running them throughout the software delivery pipeline. DevOps teams often use tools like \",/*#__PURE__*/e(n,{href:\"https://www.jenkins.io/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Jenkins\"})}),\", \",/*#__PURE__*/e(n,{href:\"https://travis-ci.org/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Travis\"})}),\", and \",/*#__PURE__*/e(n,{href:\"https://www.selenium.dev/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Selenium\"})}),\" to handle continuous testing.\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Integration\"}),/*#__PURE__*/e(\"p\",{children:\"Continuous integration involves running code changes to a central repository for automated tests and builds. DevOps engineers typically deploy continuous integration to identify and mitigate bugs and vulnerabilities as soon as they\u2019re observed. Through continuous integration, you can catch errors during production and ship better software with each release.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Delivery\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Continuous delivery also involves pushing code into a testing environment. This step of DevOps expands testing capabilities and helps developers catch and remediate errors.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Deployment\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Continuous deployment goes a step beyond continuous delivery. This strategy enables code to automatically flow into production after testing without manual approval. In this light, continuous deployment can also help expedite software releases.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Monitoring\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Continuous monitoring comes into play once an application moves into production. DevOps teams continue monitoring the application for performance and collect feedback to influence ongoing updates.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"What Is SRE?\"}),/*#__PURE__*/e(\"p\",{children:\"SRE is a strategy that uses the principles of engineering and computer science to design and create computing systems. This work is administered by site reliability engineers who are usually programmers with operational knowledge and are good at simplifying complexity.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Specific SRE workflows and responsibilities tend to vary across different teams and environments. However, the main purpose of SRE is to combine traditional IT and software engineering. In short, SRE helps engineering and operations teams create reliable software systems and deliver them at enterprise scale.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"The 7 Principles of SRE\"}),/*#__PURE__*/e(\"p\",{children:\"Just like DevOps, SRE focuses heavily on automation and culture. Additionally, site reliability engineers work to build relationships and enhance production processes.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Google outlines the following SRE principles in its \",/*#__PURE__*/e(n,{href:\"https://sre.google/sre-book/preface/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"benchmark SRE book\"})}),\".\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"1. Embracing Risk\"}),/*#__PURE__*/e(\"p\",{children:\"As Google explains, increasing reliability can negatively impact a service. This is because extreme reliability limits the speed at which you can develop new services. And users can\u2019t always tell the difference between high and extreme reliability in a service. As such, SRE teams attempt to balance the risk of unavailability with efficient service operations and fast innovation.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Service-Level Objectives\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In order to measure an application\u2019s performance, you have to understand what metrics really matter. SRE defines service-level indicators, objectives, and agreements to determine the most important values to an operation.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Eliminating Toil\"}),/*#__PURE__*/e(\"p\",{children:\"SRE also works to identify and eliminate toil or work that\u2019s manual, automatable, and repetitive. By eliminating toil, SRE expedites production, improves workflows, and reduces operational costs. It also makes production more enjoyable for workers\u2014something that\u2019s critical in a time when tech workers are coming and going rapidly.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Monitoring Distributed Systems\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Companies with large, distributed IT environments are increasingly relying on SRE to monitor and address infrastructure risks. As such, SRE works to maximize uptime and reduce complexities.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Automation\"}),/*#__PURE__*/e(\"p\",{children:\"Automation is a core part of agile development, and SRE plays an important enabling role in making it all happen. SRE identifies automation opportunities across multiple domains and forms automation strategies. It also often spearheads workflow automation for DevOps.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"6. Release Engineering\"}),/*#__PURE__*/t(\"p\",{children:[\"In order to have a \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/what-is-a-release-engineers-job\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"successful software release\"})}),\", you need to have the right supporting systems and processes in place. SRE orchestrates IT components to maximize output and minimize system disruptions.\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"7. Simplicity\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Too much complexity makes it difficult to scale. It also exposes an organization to risk by making it harder to identify vulnerabilities. SRE focuses on reducing complexity to maintain operational stability and efficiency.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"DevOps vs SRE: Does It Matter?\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"In truth, it isn\u2019t a question of DevOps versus SRE. These two frameworks complement each other and work to achieve stronger automation and operational efficiency.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Smaller organizations and companies with manageable IT footprints tend to use DevOps models to deliver software quickly and enhance collaboration.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, larger enterprises with distributed environments tend to use SRE more to manage operations and reduce downtime. SRE can help enhance capacity and disaster planning, and it provides a stable and predictable environment.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In light of this, it\u2019s a good idea to analyze your environment and determine which strategy is right for you. It largely depends on the size and scope of your operation and your available resources. Some organizations may benefit from DevOps, while others may need to go above and beyond and bring in SRE to provide greater automation and stability.\\xa0\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Unlock the Value of DevOps and SRE With TEM!\"}),/*#__PURE__*/e(\"p\",{children:\"DevOps and SRE both rely heavily on CI/CD testing to drive improvements and minimize the impact of change during production. Yet DevOps engineers and site reliability engineers often struggle with a lack of visibility across their test environments, which makes their job that much more difficult.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Many organizations are still using manual spreadsheet and file-sharing tracking solutions, which are risky and inefficient. Without real-time visibility into what\u2019s happening, teams are more likely to allow errors to escape into production. A lack of visibility also leads to wasted time, interruptions, and higher operating costs\u2014not to mention unhappy customers.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Luckily, there\u2019s an easy fix: Plutora\u2019s purpose-built \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/solutions/use-cases/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"test environment manager\"})}),\" can provide deep visibility across your entire test environment through a single dashboard. TEM can also serve as a single repository for your test environment and as a single interaction point for stakeholders. With a central platform in place, you can also eliminate conflicts and improve cross-team collaboration.\\xa0\"]}),/*#__PURE__*/e(\"h2\",{children:\"Take Advantage of Plutora\u2019s New Solution Bundles\"}),/*#__PURE__*/e(\"p\",{children:\"If your business is serious about maximizing DevOps and SRE, it pays to improve and automate your testing processes.\\xa0\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Plutora is now offering new \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/test-environment-management-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Test Environment QuickStart bundles\"})}),\", which simplify the approach to DevOps and SRE while providing an immediate return on investment. The bundles feature aggressive pricing, standardized reports, and fast implementations.\\xa0\\xa0\",/*#__PURE__*/e(\"br\",{}),\"Ready to see Plutora in action? \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now?ref=nav-bar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Request a free demo today\"})}),\".\"]})]});export const richText13=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"SaaS adoption continues to accelerate, with many companies opting to move their internal applications from on-premises data centers to public cloud environments.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"In fact, Gartner reports that the cloud will be responsible for roughly 11% of spending growth within the enterprise software segment in 2022 as companies focus on \",/*#__PURE__*/e(n,{href:\"https://www.gartner.com/en/newsroom/press-releases/2022-01-18-gartner-forecasts-worldwide-it-spending-to-grow-five-point-1-percent-in-2022\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"upgrading their software stacks\"})}),\" to hosted software-as-a-service (SaaS) models. The cloud is also on pace to be twice the size of the non-cloud market by 2025.\"]}),/*#__PURE__*/e(\"p\",{children:\"But while moving an application to the cloud may seem simple from the outset, it can be difficult to execute. Organizations often struggle to transition from traditional on-prem application architectures because they lack the planning and guidance necessary to navigate challenges and make strategic decisions.\"}),/*#__PURE__*/e(\"p\",{children:\"As such, it\u2019s critical to have a comprehensive strategy in place before leaping into the cloud. Continue reading for a complete breakdown of why you need a cloud migration strategy and what you can do to ensure a successful transition to the cloud.\"})]});export const richText14=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is a Cloud Migration Strategy?\"}),/*#__PURE__*/t(\"p\",{children:[\"A cloud migration strategy is an operational plan that companies establish to transition legacy applications and their data to public cloud environments \u2014 like Google Cloud Platform (GCP), \",/*#__PURE__*/e(n,{href:\"https://www.cloudthread.io/blog/demystifying-how-aws-data-transfer-pricing-works\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Amazon Web Services (AWS)\"})}),\", and Microsoft Azure.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"The strategy should account for all aspects of cloud migration, including testing and releasing.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Should I Use a Cloud Migration Strategy?\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud migration is not something that you want to take lightly \u2014 especially when it involves core applications that are central to your business\u2019s main operations.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Companies often face many challenges when migrating to the public cloud. For example, cloud sprawl can occur when a business loses track of its instances, storage locations, and providers. Going over budget, a lack of internal expertise and security vulnerabilities are all additional threats that your business may encounter along the way.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By forming a cloud migration strategy, you can anticipate issues before they occur. A robust cloud migration strategy can reduce risk and increase your chances of successful cloud migration with minimal interruptions.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"How to Develop a Cloud Migration Strategy\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you have a better idea of what a cloud strategy is and why you need one, let\u2019s take a look at specific steps you can take to develop a strategy of your own.\"}),/*#__PURE__*/e(\"p\",{children:\"Companies generally tend to differ when forming cloud migration strategies. After all, no two organizations are alike. Even so, there are common steps that you will need to go through during this process.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Assess Your Environment\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Jumping from legacy applications to the cloud will introduce a completely new set of demands as well as opportunities for your engineering team. Oftentimes, companies will charge into a cloud migration and then realize they lack the resources to pull it off. This can lead to project delays and cause projects to lose momentum.\"}),/*#__PURE__*/e(\"p\",{children:\"To prevent this from happening, one of the first things you should do is assess your engineering department to understand its available resources. Consider the department\u2019s capacity to handle change and take on shifting roles and responsibilities. Additional training may be necessary to help employees navigate the cloud market.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Appoint a Migration Architect\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"A cloud migration can involve numerous teams and individuals, including executive decision-makers, IT managers, developers, consultants, and vendors. This can lead to conflicts and confusion \u2014 unless you take proper precautions.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"As with any large-scale project, it can help to establish a single migration architect to oversee operations and take responsibility for it. This individual will be responsible for approving key decisions, maintaining a budget, and ensuring the project adheres to your organization\u2019s policies and expectations.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"As a tip, it\u2019s worth having a second person in command who can step in and keep the project moving. That way, in the event the chief architect leaves the organization or takes on another role, your migration will still be on track.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Determine Your Cloud Model\"}),/*#__PURE__*/e(\"p\",{children:\"One of the most important decisions you will have to make is whether you want to use a single provider or multiple providers. Most enterprises now use multiple cloud providers and allocate workloads strategically to minimize costs and maximize performance. But there are pros and cons to the multi-cloud approach, and it isn\u2019t for every company.\"}),/*#__PURE__*/e(\"p\",{children:\"Going through a single provider is generally easier for developers and managers, largely because it will come with a single system to learn and manage. But this can also lead to vendor lock-in, especially as you continue to iterate your application and form a security strategy.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Conversely, working with multiple providers will allow you to access competitive pricing and strengthen risk management. However, a hybrid model is much more complex than a single cloud. For this reason, it requires careful orchestration and subject matter expertise.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Have your cloud team weigh the pros and cons of single and multi-cloud early on in the process and determine what\u2019s best for your organization. Keep in mind you can always start with a single cloud provider and scale your operations to other services down the road.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Consider Your Performance Metrics\"}),/*#__PURE__*/e(\"p\",{children:\"After you determine a cloud model and pick a provider, you can turn your focus to key performance indicators (KPIs). Chances are likely you will have to adjust your current approach and modernize your KPI list for the cloud.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"When building your cloud KPI checklist, you can break it down into multiple categories including costs, labor, operational performance, business value, and agility. Some common examples include energy costs, budget variance, compliance, and service availability.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"These KPIs will most likely change over time as your cloud usage increases. This is where it helps to have a single cloud dashboard where your team can monitor progress on a historical and real-time basis.\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Prioritize Workloads for Migration\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to consider how you want to migrate your application to the cloud. You can either do this all at once or in stages. It largely depends on the scope and complexity of your application and your team\u2019s bandwidth.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"During this process, it\u2019s a good idea to outline your dependencies and determine what you can move and how it will impact performance. Create application maps and link the services that they connect to so that you can avoid impacting the application during the migration.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"6. Migrate Your Data\"}),/*#__PURE__*/e(\"p\",{children:\"Data is the lifeblood of any enterprise application. That being the case, it\u2019s critical to exercise caution when moving it from an on-prem environment to the cloud. Data is a fundamental component of application workflows. If you aren\u2019t careful, it can become lost, corrupted, or exposed during a migration.\"}),/*#__PURE__*/e(\"p\",{children:\"As such, it\u2019s very important to be strategic about how and where you move your data. Your migration strategies should also closely align with your specific use cases and network resources.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Most cloud providers offer cloud data migration services that you can use to transfer data efficiently and securely. Consult with your cloud providers and ask about any tools they might offer.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"7. Form an Identity Access Management (IAM) Strategy\"}),/*#__PURE__*/e(\"p\",{children:\"Migrating an application into the public cloud can pose a significant risk due to the higher number of human and non-human identities that will be able to access your information and services. Non-human identities may include things like serverless functions and service principles.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To strengthen your security posture, you will want to have a robust IAM strategy in place. This will make it possible for managers to track identity changes when they occur and prevent identities from going rogue and silently taking on additional permissions.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"The 7 Rs of Application Modernization\"}),/*#__PURE__*/t(\"p\",{children:[\"On the whole, there are several strategies you can use to migrate applications and data into the cloud. Gartner\u2019s \u201C\",/*#__PURE__*/e(n,{href:\"https://www.gartner.com/en/documents/1485116/migrating-applications-to-the-cloud-rehost-refactor-revi\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"5 Rs for Migrating Applications to the Cloud ''\"})}),\" remains a popular model for companies today. AWS also offers an\",/*#__PURE__*/e(n,{href:\"https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-retiring-applications/apg-gloss.html#apg.migration.terms\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" updated list of cloud migration strategies\"})}),\" with two additional steps baked in.\"]}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s an overview of each strategy, according to the AWS framework for cloud migration.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Refactor\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Refactoring involves rewriting certain parts of your application to make the application suitable for a public cloud environment. For example, your application may use older databases. You may need to update them with modern services to ensure operational stability. Refactoring usually makes sense when you need to add new functions to an application, modernize it, and eliminate vulnerabilities.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Replatform\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Replatforming involves moving an application to the cloud and adding a new optimization mechanism. In this case, you might transfer an application but change the underlying database to one that is a better fit for your cloud environment.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Repurchase\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Repurchasing \u2014 also known as drop and shop \u2014 occurs when you switch from one product to another. For example, you might abandon a traditional software license for a SaaS subscription model.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Rehost\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Rehosting, or lift and shift, is arguably the simplest form of migration. During this process, you make minimal changes to your architecture and simply move the application to a cloud environment.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Lift and shift may seem like a great idea at first, especially if you have a smaller team or an application that isn\u2019t very complex. However, teams often run into a variety of challenges when attempting this strategy.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To illustrate, lift and shift often leads to compatibility issues, especially when migrating older applications. What\u2019s more, lift and shift may not address any of your underlying performance issues or vulnerabilities. If you have underlying problems in your applications, you could wind up simply transferring them into the cloud without actually fixing them.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Relocate\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Relocating happens when you move infrastructure to the cloud but don\u2019t purchase any new hardware, modify your existing operations, or rewrite your applications. As Amazon explains, this strategy is specifically for VMware Cloud on AWS. Another term for this strategy is a hypervisor lift and shift.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"6. Retain\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Retaining is a strategy where you keep applications in your source environment. This strategy makes it possible to postpone certain projects and revisit them to perform updates at a later date. Companies often retain applications when there is no immediate need to migrate them into the cloud.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"7. Retire\"}),/*#__PURE__*/e(\"p\",{children:\"As you assess your application, you may discover that it no longer adequately serves your organization. This is common with older legacy applications. In this case, your team may choose to retire or decommission applications instead of moving them to the cloud.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"When to Move to the Cloud\"}),/*#__PURE__*/e(\"p\",{children:\"Part of the reason it\u2019s necessary to form a cloud migration strategy is so that you can justify the project and explain your reasoning for making the transition. This is especially important when working with administrators who are skeptical of migrating certain workloads off-site.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are some common reasons why businesses decide to move their cloud applications into hosted environments.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Simplify Hosting\"}),/*#__PURE__*/e(\"p\",{children:\"One of the downsides to using traditional applications is that you have to install key enabling components locally. This can be very challenging for global teams with distributed workers.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By moving internal applications to the cloud, employees will be able to access them from any location. This makes it faster, easier, and more cost-effective to deploy cloud services and release updates.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Improve Disaster Recovery\"}),/*#__PURE__*/e(\"p\",{children:\"Many businesses today use traditional data centers for disaster recovery. This is expensive and complex and it requires ongoing maintenance which pulls engineers away from other projects.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Many businesses now use cloud infrastructure for disaster recovery to achieve cost savings, reduce complexity, and ensure their apps remain accessible in the event of an unplanned outage or disaster. Cloud facilities offer full redundancy to protect against a variety of outages.\"}),/*#__PURE__*/e(\"h3\",{children:\"Enhance Security\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Migrating to the cloud is a great way to make your internal applications more resilient against today\u2019s sophisticated and evolving cyberthreats.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, most public cloud providers use a shared responsibility model. This means that your business will still have an important role in daily security management.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Key Considerations When Migrating Applications to the Cloud\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Examine Hybrid Cloud for Highly Sensitive Applications\"}),/*#__PURE__*/e(\"p\",{children:\"While cloud providers pride themselves on security, it can be risky to rely on third-party cloud vendors to power your internal applications. These systems can sometimes fail, potentially exposing sensitive data. Further security issues can arise when transporting sensitive data over long distances using the public internet.\"}),/*#__PURE__*/e(\"p\",{children:\"Many organizations are now adopting hybrid models and using a combination of edge deployments along with on-prem infrastructure. With this strategy, you keep highly sensitive applications and data on-site for tighter control.\"}),/*#__PURE__*/e(\"h3\",{children:\"Don\u2019t Expect Immediate ROI\"}),/*#__PURE__*/t(\"p\",{children:[\"Advocates of cloud computing often point to \",/*#__PURE__*/e(n,{href:\"https://www.cloudthread.io/blog/unit-metrics-a-stepping-stone-to-sustained-cloud-cost-efficiency\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cost savings\"})}),\" and ROI as key benefits to migration. However, it can take a long time \u2014 several years even\\xa0 \u2014 to achieve financial benefits from a cloud migration.\"]}),/*#__PURE__*/e(\"p\",{children:\"So, if your business is looking for immediate financial benefits from cloud migration, it\u2019s important to temper your expectations and think long-term. Otherwise, you could be in for a disappointment.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Limited Network Capacity\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud applications can put a significant amount of strain on your network \u2014 especially if they use streaming media. This can bring your entire network to a standstill and negatively impact global users.\"}),/*#__PURE__*/e(\"p\",{children:\"Before moving to the cloud, conduct a network assessment to make sure you have the resources in place to support your migration. This could require working with a third-party network as a service (NaaS) provider that can provide access to fully managed, affordable, and optimized infrastructure.\"}),/*#__PURE__*/e(\"h2\",{children:\"Using Cloud Test Environments to Control Costs\"}),/*#__PURE__*/e(\"p\",{children:\"The journey to the cloud is full of pitfalls that can slow down your operations and drive up costs. And one of the top mistakes that companies make is they continue to rely on outdated and inefficient testing environments.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Poorly managed test environments can have a major impact on your bottom line. According to our estimates, if your team makes 76 releases per year with an unmanaged test environment, you will lose roughly $1.4 million in provisioning delays, underutilized test environments, delayed production releases, application quality costs, and extra labor costs.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"As we explain in a related post, it\u2019s critical to transition to cloud test environments and embrace\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/control-costs-cloud-test-environments\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" testing and infrastructure automation\"})}),\". This is because test environments are inherently temporary in nature. So, if you can manage to cut the cycle time to just a few minutes, then you can significantly reduce operational costs and reallocate funding into higher areas of need.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"This is possible using a solution like\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/test-environment-management-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Plutora Test Environment Manager\"})}),\", which is part of a complete toolkit for application delivery. This\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" TEM solution\"})}),\" lets you schedule and execute functional test scripts to check application behavior and environment health, check bookings, and run test audits with custom reports.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re serious about maximizing your cloud migrations and maximizing cost savings, Plutora can help get you on track. Plutora is also currently offering a new promotion with special pricing, enhanced reporting, and lightning-fast implementations.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Want to start right away? Take Plutora for a spin by\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now?ref=nav-bar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" requesting a free demo today\"})}),\".\\xa0\"]})]});export const richText15=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"With the onset of big data and advances in computation technology, many businesses made a shift from on-premise to cloud platforms for data storage and infrastructure management systems. But what led to this shift? Why do businesses continue making the move to cloud services? In this post, we\u2019ll address these questions by looking at what on-premise and cloud services offer and how they differ.\"}),/*#__PURE__*/e(\"p\",{children:\"Here's what you can expect to learn from this article:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What is on-premise storage?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What is cloud storage?\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Differences between on-premise and cloud environments\"})})]})]});export const richText16=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"1. What Is On-premise Storage?\"}),/*#__PURE__*/e(\"p\",{children:\"Like the name suggests, on-premise storage entails storing your organizations' data servers at the physical location of the organization. The data storage servers are built on the premises, giving the company full control and responsibility of computing and of administrating and maintaining resources and infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"To set up a local storage environment, the organization must first purchase software licenses. Furthermore, the underlying hardware infrastructure (database, servers) necessary to run the software is purchased and built in-house. In-house IT teams and engineers operate, manage, control, and maintain the functioning of the whole environment (software and hardware components).\"}),/*#__PURE__*/e(\"h2\",{children:\"2. What Is Cloud storage?\"}),/*#__PURE__*/e(\"p\",{children:\"Unlike on-premise software environments, cloud software platforms allow organizations' to store their data and necessary infrastructure off-premise. This means that organizations' don't have to build their own data storage systems. Instead, data servers and software are provided by a third-party service.\"}),/*#__PURE__*/e(\"p\",{children:\"Furthermore, your organizations' in-house IT team is not responsible for managing the software or hardware infrastructure. Instead, your IT team focuses on controlling and managing data availability, access, security, and so on. The cloud service provider takes care of operating and maintaining data servers and upgrades.\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you have a brief idea of what on-premise and cloud environments entail, let's dive into the details of their differences.\"}),/*#__PURE__*/e(\"h2\",{children:\"3. Differences Between On-premise and Cloud Storage\"}),/*#__PURE__*/e(\"h3\",{children:\"IT Manager\u2019s Focus: On-premise\"}),/*#__PURE__*/e(\"p\",{children:\"To fully understand the difference between working with on-premise versus cloud storage, let\u2019s examine the roles of two IT managers. One is working in an on-premise computing environment at company A and the other is leading the technological developments and advancements at organization B, which is a cloud-based. The IT manager in organization A oversees the IT department and has the following responsibilities:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Establish storage infrastructure and set up in-house network access protocols\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Supervise, manage, maintain, and administer the entire on-premise computing infrastructure\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Deal with any malfunctions or equipment replacement in the on-premise environment\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Build and maintain an in house security system: This entails monitoring all the hardware and software, checking access permissions, setting up firewalls and VPNs, and more. It also includes securing the physical infrastructure housed within the organization.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"IT Manager\u2019s Focus: Cloud\"}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, at organization B, the IT manager focuses on different responsibilities:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Since infrastructure is now provided as a service, responsibility for infrastructure maintenance and management is moved to the cloud service provider. Thus the role of an in-house enterprise and infrastructure team is pruned to strategic planning and monitoring technology and resource allocation to fulfill client requirements.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Oversee a team of cloud security experts that rigorously monitors the cloud infrastructure and data stored in the cloud; ensure that cloud applications follow security standard\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Establish access protocols and data encryption to protect sensitive information and prevent data breaches. Carry out regular audits and checks to ensure cloud data is secure.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Innovate, optimize, and automate: find opportunities to optimize application development pipelines with better tools.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Although IT managers running on-premise computing have some of these duties as well, their main focus is on technical infrastructure management, whereas cloud computing allows for more time spent optimizing and driving business growth. Security concerns are higher with cloud computing due to the shared environment connected through the web. The responsibilities of the IT manager in each environment represents a shift in focus.\"}),/*#__PURE__*/e(\"h3\",{children:\"Cost\"}),/*#__PURE__*/e(\"p\",{children:\"On premise computing requires a high up front cost because the organization builds its own infrastructure, hardware, and firmware. They must also purchase software licenses to distribute within the organization. Maintenance of the infrastructure is expensive and requires a full-fledged IT support team at all hours. On-going maintenance costs include repair or replacement of hardware, server power consumption, and other utility bills.\"}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, with cloud computing, organizations don't pay to set up the infrastructure, servers, and hardware, and don't pay for software licenses because they use software provided by the cloud service provider. Instead, a third-party cloud service provider takes care of the storage hardware and resource allocation requirements, as well as the associated maintenance costs. However, the provider charges an on-going monthly subscription cost, which sums to a fraction of the upfront cost of building and maintaining an on-premise environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"Data Security\"}),/*#__PURE__*/e(\"p\",{children:\"On-premise environments have their own data security systems that are not connected or shared with the outside world. Owing to this, many organizations that are responsible for highly sensitive data, such as banking details, customer data, and confidential government documents, prefer on-premise storage.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud environments are more susceptible to external threats because the data is housed on a cloud shared by several other clients. Many cloud service providers offer highly sophisticated security tools and have accredited security certificates. However, because the cloud is accessible through the internet, there is a higher risk (cybersecurity threats and hackers) associated with cloud, than with on-premise environments.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scalability and Flexibility\"}),/*#__PURE__*/e(\"p\",{children:\"On-premise environments are fully dependent on their available infrastructure and available resources. Thus, if an organization wants to scale up and add more storage, they have to purchase or upgrade their physical servers. This is time-consuming and expensive, especially for data-driven organizations that are in constant need of more resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Cloud environments are highly flexible in terms of resource allocation. Organizations pay for the resources they use. They can instantly scale up and attain more storage or internet usage without putting effort into the underlying technical aspects. Moreover, when the organization needs less or no resources, it can scale down or shut down without inferring any extra costs.\"}),/*#__PURE__*/e(\"h3\",{children:\"Control\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations that use an on-premise environment have full control over their data. It is only shared within the internal network of the organization for the most part, although in rare circumstances they may choose to share it with other parties. On-premise environments also have more control in terms of tackling any data breaches or downtime issues. Thus, they can more quickly mitigate risks, address breaches, and reduce downtime.\"}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, the cloud service provider has access to the organizations' data. Due to this, the organization doesn't have full control of their own data. Issues concerning data privacy and vulnerability are challenging in cloud environments. Moreover, if the service provider faces any downtime, the organization can't do much except for wait until they gain back access to their data.\"}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/t(\"p\",{children:[\"Now that you're aware of the key differences, you might wonder if it\u2019s wiser to choose a cloud or on-premise environment. Organizations that are continuously deploying applications would benefit from a cloud platform. DevOps principles of continuous development, continuous testing, and continuous deployment are at the heart of these organizations. Many data-driven organizations are shifting to the cloud because of the scalability and flexibility needed for their goals. \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plutora\"})}),\" can help organizations attain rapid growth by mitigating and \",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/test-environment-management-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"resolving conflicts in application testing environments\"})}),\". Since continuous testing is crucial to facilitate continuous deployment, Plutora can help grow organizations.\"]}),/*#__PURE__*/e(\"p\",{children:\"On the other hand, on-premise environments might be more suitable for organizations that house highly confidential information. Whilst both systems have their pros and cons, the decision of which to choose depends on an organization\u2019s needs and goals.\"})]});export const richText17=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h6\",{children:\"As user expectations continue to rise, DevOps teams are under enormous pressure to bring high-quality software to market. As such, teams are now paying more attention to pre-production testing in a staging environment and looking for ways to reduce flaws and vulnerabilities before releasing products.\"}),/*#__PURE__*/e(\"p\",{children:\"Software teams typically integrate a dedicated staging environment into their continuous integration/continuous development (CI/CD) pipelines to simulate software before its release and remediate any underlying issues. In fact, staging is one of the most important parts of the pre-production testing process.\"}),/*#__PURE__*/e(\"p\",{children:\"Read on to learn more about what a staging environment is, why it\u2019s important, and how it differs from a production environment.\"})]});export const richText18=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What Is a Staging Environment?\"})}),/*#__PURE__*/e(\"p\",{children:\"A staging environment is essentially a test sandbox or a close replica of a live production environment, often referred to as a test server, where developers can freely test software.\"}),/*#__PURE__*/e(\"p\",{children:\"Even though staging and production environments are very similar, they are completely separate. In a production environment, rollouts and rollbacks directly impact end-users. However, in a staging environment, all system changes take place internally, ensuring that end users experience stability and reliability. This gives software teams more freedom to experiment and make changes without impacting users.\"}),/*#__PURE__*/e(\"p\",{children:\"By going through the staging environment, it\u2019s possible to discover and eliminate issues that could lead to performance and security vulnerabilities for users. This leads to stronger user satisfaction and lowers development costs by reducing rollbacks and patching.\"}),/*#__PURE__*/e(\"p\",{children:\"Given that a staging environment will provide a glimpse of how software will perform in a live production environment, the staging environment must mirror the same servers, databases, and configurations. We\u2019ll touch on this more below.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"How Does Staging Fit into a CI/CD Pipeline?\"})}),/*#__PURE__*/e(\"p\",{children:\"Staging is one of the last processes in the CI/CD pipeline. It sits directly between the build and production phases of the development life cycle.\"}),/*#__PURE__*/e(\"p\",{children:\"Of note, the staging environment can be a static environment for testing. It\u2019s also possible to provision a dynamic environment with dedicated configuration code and infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"What\u2019s more, the staging environment for data is a temporary storage area that connects to data storage and warehouse locations. It\u2019s not meant for long-term data storage. With this in mind, your staging area should be able to quickly and securely pull data from source locations without compromising it.\"}),/*#__PURE__*/e(\"p\",{children:\"For this reason, it\u2019s essential to use robust data management tools to visualize data flows and track information as it moves from one point to the next. This is particularly important in fast-moving DevOps environments that pull large volumes of data on a daily basis. Ideally, you should also consider using a strong information access management (IAM) solution to restrict access and ensure strong data governance.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What Makes Staging Different from Production?\"})}),/*#__PURE__*/e(\"p\",{children:\"While staging and production environments have similar underlying components, their processes are different. Let\u2019s take a closer look at how they vary from one another.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Staging Processes\"})}),/*#__PURE__*/e(\"p\",{children:\"Testing during the staging process, including on a test server, is all about preparing software for the production environment and addressing technical issues.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Smoke Testing\"})}),/*#__PURE__*/e(\"p\",{children:\"Smoke testing, or build verification testing, is a type of analysis that verifies whether a program\u2019s critical supporting functions work properly, often conducted in a staging environment. These tests ensure software is operationally sound.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Chaos Engineering\"})}),/*#__PURE__*/e(\"p\",{children:\"Chaos engineering involves simulating potential failures before they occur in a secure staging environment. By conducting this type of analysis, engineers can identify potential issues before they occur in production, improving resilience and uptime.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"User Acceptance Testing (UAT)\"})}),/*#__PURE__*/e(\"p\",{children:\"UAT is typically one of the last stages of the staging environment. It occurs immediately before software goes into the production environment. During this stage, engineers check to make sure that the software can handle real-world functions and meet the expectations of end users.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Production Processes\"})}),/*#__PURE__*/e(\"p\",{children:\"Testing still takes place once software goes into production. Testing in production involves examining code changes on live user traffic and collecting continuous feedback. DevOps teams use this feedback to improve performance quality and increase user satisfaction.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Disaster Recovery Testing\"})}),/*#__PURE__*/e(\"p\",{children:\"Disaster recovery testing involves checking how well the company can recover data and restore operations after an outage. This is important for developing resilient applications.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Visual Regression Testing\"})}),/*#__PURE__*/e(\"p\",{children:\"System changes can sometimes interfere with existing software features and disrupt the user experience. To prevent this, engineers use visual regression testing to examine the visual interface and eliminate any inconsistencies.\"}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"A/B Testing\"})}),/*#__PURE__*/e(\"p\",{children:\"Developers often use feature flags to conduct A/B testing with real-life data to analyze how updates and rollouts compare with previous versions. A/B testing works best when testing in production, where there is live production traffic.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"What Is an Immutable Staging Environment?\"})}),/*#__PURE__*/e(\"p\",{children:\"More and more teams are using cloud servers, which they can spin up and deploy with ease. For this reason, immutable\u2014or unchangeable\u2014staging environments are becoming increasingly popular in any modern staging environment. Simply put, immutable deployments eliminate the need to put new applications on existing infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"The staging environment doesn\u2019t change once it goes into production. If you need to alter an immutable deployment in any way, you\u2019ll need to use new code and infrastructure.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Supporting Your Staging Environment with Infrastructure as Code (IaC)\"})}),/*#__PURE__*/e(\"p\",{children:\"One of the downsides to using multiple environments like development, staging, and the staging environment in addition to production is the potential for configuration drift. Configuration drift occurs when environments fall out of sync with one another. For example, a production environment might wind up with different configurations over time than staging or development. This discrepancy can lead to potential security and governance issues.\"}),/*#__PURE__*/t(\"p\",{children:[\"With this purpose in mind, it\u2019s a good idea to deploy an\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/infrastructure-as-code\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" infrastructure as code\"})}),\" (IaC) tool to safeguard against configuration drift. In case you\u2019re unfamiliar, IaC is a technique for defining the systems your code needs to operate. For example,\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/ci-cd-tools/configuration-management-tools/chef\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Chef\"})}),\" and\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/ci-cd-tools/configuration-management-tools/ansible\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" Ansible\"})}),\" are two popular IaC tools that you can use to define your infrastructure.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Evaluating Your Staging Environment\"})}),/*#__PURE__*/t(\"p\",{children:[\"DevOps teams often struggle to evaluate and manage their staging environments, especially when trying to replicate the test server and the staging environment as closely as possible to a production environment. As we explained in an earlier post, there is a common misconception today that there can\u2019t be any\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/blog/scale-down-test-environments\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" difference between staging and production\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"In fact, it\u2019s economically unreasonable to fully recreate a production environment at scale, which is why a staging environment is often used instead. In other words, your production and pre-production systems don\u2019t have to be equal in every way. Rather than focusing on scale, it\u2019s better to focus on quality. As long as you have enough hardware to support qualification, you should be fine.\"}),/*#__PURE__*/e(\"p\",{children:\"Best practices call for using the same clustering approach that you would in production and testing with a minimum level of redundancy.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"strong\",{children:\"Streamline Test Environments with Plutora\"})}),/*#__PURE__*/e(\"p\",{children:\"At the end of the day, software testing is supposed to save time and reduce aggravation for DevOps teams and end users. However, this isn\u2019t always the case. DevOps leaders often lack visibility into the production environment, suffer from scheduling issues, and waste time on complex configuration hang-ups, among other things.\"}),/*#__PURE__*/t(\"p\",{children:[\"Enter Plutora, which addresses all of these issues through the comprehensive\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/platform/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" test environment management platform\"})}),\". This tool streamlines application delivery end to end, providing a single repository where DevOps teams can plan, test, track, and collaborate together as a group.\"]}),/*#__PURE__*/e(\"p\",{children:\"Using Plutora\u2019s test environment management platform, you can automate testing workflows and centralize schedules for maximum efficiency. The platform also makes it possible to predict and remediate contentions and follow configuration change requests from a central location. Plutora also aggregates release data so delivery teams can make quick decisions.\"}),/*#__PURE__*/t(\"p\",{children:[\"Plutora is currently offering new test environment manager solution bundles with aggressive pricing, standard reports and capabilities for specific use cases, and quick implementations. To learn more about how Plutora can accelerate your DevOps evolution,\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/test-environment-management-quickstart\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" check out our product page\"})}),\". While you\u2019re at it, you can also take Plutora for a spin by\",/*#__PURE__*/e(n,{href:\"https://www.plutora.com/evaluate-now?ref=nav-bar\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" requesting a demo\"})}),\".\"]})]});export const richText19=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"h6\",{children:\"The main event during agile methodology is the sprint, the stage where ideas turn into innovation and valuable products come to life.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"On one hand, agile sprints can be highly effective and collaborative. At the same time, they can be chaotic and inefficient if they lack proper planning and guidance. And for this reason, making a sprint schedule is one of the most important things you can do to ensure that your efforts are successful.\\xa0\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re looking to schedule your next sprint, you\u2019ve come to the right place. Keep reading to learn everything you need to know about sprint scheduling, including some tips to drive the best results.\\xa0\"})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText19\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText9\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText13\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText10\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText11\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText18\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText15\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText16\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText17\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText14\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText12\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "richText1", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "richText8", "richText9", "richText10", "richText11", "richText12", "richText13", "richText14", "richText15", "richText16", "richText17", "richText18", "richText19", "__FramerMetadata__"]
}
