{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/wQkrKbJZUqK24WDRABya/9JJSd55kUCD7308oVHah/VttwVM63r-21.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{Link as o}from\"framer\";import*as i from\"react\";export const richText=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"How Should Your Team Approach DevOps?\"}),/*#__PURE__*/t(\"p\",{children:[\"Before we dive in, a quick word for those who might not be as far along in their DevOps journey. \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/what-is-enterprise-devops\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DevOps\"})}),\" is a system whereby software teams integrate their developers and the operations staff. They focus on continually improving team processes and the software they deliver, as well as constantly speeding up their delivery and feedback loops. A major focus of DevOps is the concept of continuous improvement, where a team focuses on constantly getting better.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Teams that have adopted DevOps find that it provides significant value for their development teams as well as their customers\"}),\". DevOps can be a pretty big topic, and the goals of this post are a little more advanced. If you\u2019re still exploring DevOps and whether it\u2019s correct for your team, some of the concepts can feel quite daunting. Plutora has a wealth of \",/*#__PURE__*/e(o,{href:\"https://plutora.com/diy-devops\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"excellent resources\"})}),\" on building your team\u2019s DevOps fluency. If you\u2019re finding this post and some of it feels a little bit over your head, I highly recommend doing more reading to understand how DevOps can work for your team.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Are the Goals of Continuous Deployment?\"}),/*#__PURE__*/t(\"p\",{children:[\"One of the cornerstones of the DevOps movement is continuous deployment. The heart of continuous deployment is right in the name: a team should be deploying new features and fixes all the time. \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/what-does-continuous-delivery-management-mean\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"As soon as some code is ready to go out, it should go out.\"})}),\" This is one of the ways that DevOps provides real value for customers. Code doesn\u2019t stall out waiting for a milestone release before it gets to customers.\"]}),/*#__PURE__*/e(\"p\",{children:\"The goal of continuous deployment is to get code into the hands of customers as fast as absolutely possible.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Does Continuous Deployment Work in Traditional Organizations?\"}),/*#__PURE__*/e(\"p\",{children:\"Continuous deployment runs into a lot of friction with traditional business project management. Most businesses have grown accustomed to organizing their projects with several hand-offs between departments and teams. These hand-offs mean that experts are able to work closely on any new bit of work that comes through. That\u2019s good! It also slows down the deployment process, because every project hand-off is extra work that needs to happen.\"}),/*#__PURE__*/e(\"img\",{alt:\"continuous deployment\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,ivF6FJWDSFohJGRNSBKYuC4vxpc.png?originalFilename=continuous_deployment_handoffs.png\",src:\"https://framerusercontent.com/images/ivF6FJWDSFohJGRNSBKYuC4vxpc.png\",srcSet:\"https://framerusercontent.com/images/ivF6FJWDSFohJGRNSBKYuC4vxpc.png?scale-down-to=512 512w,https://framerusercontent.com/images/ivF6FJWDSFohJGRNSBKYuC4vxpc.png 586w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"These hand-offs are the antithesis of continuous deployment. \"}),\"Code isn\u2019t getting to customers as quickly as possible. Instead, a developer finishes coding, then hands that off to a security engineer. That engineer might look at the code the same day, or they might look at it two weeks later. Once they\u2019re done, they hand the code off to a compliance officer. The cycle repeats. This is no good for anyone. Questions about old code frustrate developers. Security engineers and compliance officers experience frustration because they feel like they\u2019re constantly rushed. No one feels like they\u2019re doing their best work.\"]}),/*#__PURE__*/e(\"h2\",{children:\"How Can DevOps Better Fit in a Traditional Delivery Pipeline?\"}),/*#__PURE__*/e(\"p\",{children:\"The truth is that you\u2019re always going to have some friction trying to combine DevOps and a traditional delivery pipeline. Eventually, one of those two things has to give. Either the delivery pipeline will evolve to fit the needs of continuous delivery, or the continuous delivery philosophy will change to suit the needs of the existing delivery pipeline.\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s a small secret: the true solution for your organization will almost certainly be a little bit of both. The most mature DevOps organizations are flexible at all levels of the organization. They try new things, and find what works, then adapt those strategies across the organization.\"}),/*#__PURE__*/e(\"h3\",{children:\"How Can You Make Hand-Offs More Effective?\"}),/*#__PURE__*/e(\"p\",{children:\"Ideally, you can avoid hand-offs completely. We\u2019ll talk more about how to make that happen in later sections.\"}),/*#__PURE__*/e(\"p\",{children:\"If your team is stuck doing hand-offs, there are ways that you can make them more efficient. One of the biggest time sucks with hand-offs to security or compliance teams is having a new feature just sitting around waiting. Sometimes, this is because the work is sitting, waiting for anyone to come work on it. Sometimes, it\u2019s because an expert needs to evaluate the work. That expert likely has a long queue of work waiting for their attention, and it takes them time to work through each thing that needs their attention.\"}),/*#__PURE__*/t(\"p\",{children:[\"One way that you can circumvent these long waits is to make a developer who worked on a feature available to work with the security or compliance engineer. \",/*#__PURE__*/e(\"strong\",{children:\"Instead of handing off new work to see it disappear in a black hole, be proactive about getting attention for your code. \"}),\"When you perform a hand-off with a different team, schedule a time for a developer to sit and work directly with the person who\u2019ll evaluate that feature for fitness.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Benefits of This Approach\"}),/*#__PURE__*/e(\"p\",{children:\"This approach conveys multiple advantages. First, you\u2019re forcing your team\u2019s changes to stay at the top of the priority queue. People are much less likely to procrastinate work when they have a specific calendar invite to work on it, and someone sitting beside them to help them with the tricky bits. Sure, you\u2019re going to run into some times when a single person is a blocker, and they\u2019re unavailable for weeks. Security engineers need vacations, too.\"}),/*#__PURE__*/e(\"p\",{children:\"That leads to the second advantage: you\u2019ll have a much better sense of how long it\u2019ll take to turn around a feature. If the soonest you can schedule time with an architect to evaluate a new feature is two weeks after coding is finished, you know the feature won\u2019t pass approval before then. That\u2019ll reduce stress levels for developers and leadership, and makes it easier to communicate with other business leaders about the timeline for a project. Likewise, knowing when a feature will undergo evaluation means that you can more effectively plan when the next hand-off will occur.\"}),/*#__PURE__*/e(\"p\",{children:\"A third advantage is reducing the overall context switching necessary for developers. Developers working on a feature which is going through a long-running process constantly have to change what they\u2019re thinking about. Some days, that\u2019s new code on another in-progress feature. Some days, it\u2019s remembering details about code they wrote months ago. These context switches, especially when they happen without warning, can be a serious cognitive overhead for a developer.\"}),/*#__PURE__*/e(\"p\",{children:\"The final advantage is the building of relationships. By creating opportunities for security or compliance employees to work closely with developers, both teams integrate better. Just like integrating your development team with operations lead to better efficiencies, the same is true for teams like your security team.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Can You Eliminate Hand-Offs Completely?\"}),/*#__PURE__*/e(\"p\",{children:\"Like we mentioned above, the truth of this is that some teams simply can\u2019t eliminate hand-offs completely. They\u2019re working in organizations where existing processes are simply too well-ingrained.\"}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re not in one of those organizations, I\u2019d still recommend re-reading the previous section. Regularly scheduling times for engineers to work closely with people like security or compliance engineers is the core of building those teams into a continuous delivery pipeline. In fact, for most organizations, I would recommend taking the above steps first and building on them.\"}),/*#__PURE__*/e(\"img\",{alt:\"continuous deployment\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,an4VzufuACldvNsflYSME0xJrWM.png?originalFilename=continuous_deployment_communication.png\",src:\"https://framerusercontent.com/images/an4VzufuACldvNsflYSME0xJrWM.png\",srcSet:\"https://framerusercontent.com/images/an4VzufuACldvNsflYSME0xJrWM.png?scale-down-to=512 512w,https://framerusercontent.com/images/an4VzufuACldvNsflYSME0xJrWM.png 586w\"}),/*#__PURE__*/e(\"p\",{children:\"So, instead of scheduling a hand-off where a new feature is handed off to the security team, schedule the one-on-one communication with a security engineer before coding completes.\"}),/*#__PURE__*/e(\"p\",{children:\"What\u2019s more, you don\u2019t need to solve all your delivery pipeline problems at the same time. Some teams will naturally be easier to integrate into your continuous delivery system than others. It can be beneficial to take a look at some of these teams and outline some specific strategies for building a coherent delivery pipeline alongside them.\"}),/*#__PURE__*/e(\"h3\",{children:\"Coordinating With Security Teams\"}),/*#__PURE__*/e(\"p\",{children:\"Effectively coordinating with a security team will likely involve two face-to-face meetings. Developers and security engineers plan security into the feature from the very first step. Building security into a continuous delivery pipeline means working directly with security people before someone even opens a coding editor. This is usually a pretty easy sell for your security teams, too. They don\u2019t like having to be the team that holds up a new feature because it wasn\u2019t securely designed. Those sorts of changes are usually difficult fights and expensive in terms of time and political capital.\"}),/*#__PURE__*/e(\"p\",{children:\"From there, it\u2019s easy for developers to integrate with the security team briefly to make sure a feature is still developing securely. Instead of trying to get new code in front of an engineer after the developer has completed it, they can take a few moments of that engineer\u2019s time to verify that what they\u2019re building still conforms to the spec. If your first step was having developers work directly with engineers for feature review like suggested above, developers will already have relationships with security team members. It\u2019ll be easy to start a conversation and spend five minutes talking about what\u2019s changed.\"}),/*#__PURE__*/t(\"p\",{children:[\"When the time comes to hand a feature off to the security team, it\u2019s likely that you won\u2019t even need to. This style of feature management has become so popular within the DevOps community that it has a specific name: \",/*#__PURE__*/e(o,{href:\"https://www.redhat.com/en/topics/devops/what-is-devsecops\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DevSecOps\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"Coordinating With Compliance Teams\"}),/*#__PURE__*/t(\"p\",{children:[\"Oftentimes, the necessary coordination with compliance teams is going to come very early in the process. Many compliance teams worry that adopting DevOps will lead to serious compliance issues, but that doesn\u2019t have \",/*#__PURE__*/e(o,{href:\"https://devops.com/devops-help-hinder-compliance/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"to be true\"})}),\". The key for eliminating hand-offs with compliance teams is to understand the ways that compliance seeks to protect your company.\"]}),/*#__PURE__*/e(\"p\",{children:\"Most compliance operations are focused on who accesses what data, how, and why. Effective DevOps teams are able to build systems into their software that identifies sensitive data and protects it from unauthorized access. It\u2019s likely that when you\u2019re building these controls, your team will need to work very closely with the compliance team. Once those systems are deployed, though, keeping them operating smoothly is much simpler.\"}),/*#__PURE__*/t(\"p\",{children:[\"Much like with the security team, it\u2019s possible for your developers to leverage established relationships to virtually eliminate the need to check in with compliance. \",/*#__PURE__*/e(\"strong\",{children:\"When your developers check in with compliance teams regularly, the compliance officers are not surprised by new features. \"}),\"They understand the consequences of a new feature, and what risks it exposes. Instead of a long wait while the compliance team verifies a new feature, it\u2019s a quick check to make sure there\u2019s nothing they haven\u2019t seen before. Hand-offs aren\u2019t necessary because the work has already been done.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Coordinating With QA/QC Teams\"}),/*#__PURE__*/e(\"p\",{children:\"Unless security or compliance teams have the final say, QA teams will always need some say at the end of the process. It\u2019s their job to assure that the code meets the desired quality of the organization.\"}),/*#__PURE__*/e(\"p\",{children:\"It is possible, however, to move some of their work forward in the process, though. This can be a very challenging process for many organizations because the necessary work sometimes requires educating QA personnel in new ways of working. In most organizations, QA personnel are analysts. Their job is to analyze the work done by developers, and either approve it or catalog shortcomings.\"}),/*#__PURE__*/e(\"p\",{children:\"In a DevOps team, QA personnel work more like engineers. Their job is to find places where QA work can be automated. Most of these QA engineers will spend time writing code to create automated tests which verify the validity of a system. These automated tests take a significant amount of work off both QA analysts and engineers in terms of manually testing a system. This automation removes work the QA team needs to do after code is finished.\"}),/*#__PURE__*/e(\"p\",{children:\"The ideal situation for this is for new QA automation to develop in sync with new feature development. New code is automatically accompanied by QA code which verifies the fitness of the feature.\"}),/*#__PURE__*/e(\"h2\",{children:\"Continuous Deployment Requires Continuous Improvement\"}),/*#__PURE__*/e(\"p\",{children:\"Building a mature continuous deployment pipeline means everyone needs to work at getting better all the time. It\u2019ll require adjustments not just from teams who work with the DevOps team, but from the engineers themselves. They need to work more closely with people who aren\u2019t more directly technical, in order to ensure that the code they write does what it needs to.\"}),/*#__PURE__*/e(\"p\",{children:\"The key to remember is that this isn\u2019t something you\u2019ll accomplish overnight. Teams that haven\u2019t adopted DevOps, or can\u2019t, won\u2019t be keen on upending their workflows to suit your team. You need to show them the relative value of working with more collaboration before they\u2019re going to make major changes. Usually, this happens incrementally or not at all. So, instead of trying to implement sweeping changes, get your engineers close to the people who hold up continuous deployment. Build those relationships, and help your engineers understand how to build code that\u2019ll pass muster the first time. Build on it bit by bit.\"}),/*#__PURE__*/e(\"p\",{children:\"Before you know it, you\u2019ll wonder why you ever did hand-off meetings. Your team will wonder how they ever worked without regular input from other parts of the business. Your security and compliance teams will experience lower stress and feel great that the software you ship is better than ever. And the best part is that your customers will still be overjoyed.\"})]});export const richText1=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Gone are the days when \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/waterfall-methodology\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"traditional project management\"})}),\" helped a company thrive. There was a time when project managers had to create a fixed scope for software development. It also meant that various teams were responsible for their respective tasks. The entire process was sequential. This meant only after completing one stage could the process move to the next one. But changing times call for changes in software development.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"Most companies are switching to an agile framework, meaning they\u2019re also adopting a team-based and iterative approach. Building on that, \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/scrum-vs-agile\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"scrum is the most vital application of the agile method.\"})}),\" It facilitates proper organization and prioritization of tasks. Moreover, scrum helps in the smooth running of an agile framework by eliminating silos.\"]}),/*#__PURE__*/e(\"p\",{children:\"This post will guide you through what the Scrum Alliance is, explain in detail the importance of scrum for an organization, and show you how Scrum Alliance certifications can help crank your game up a notch.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s get started!\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText2=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is the Scrum Alliance?\"}),/*#__PURE__*/t(\"p\",{children:[\"Since scrum is a new technology, many people don\u2019t have in-depth knowledge about it. The Scrum Alliance is an organization that addresses this issue. It provides support, resources, and education to practitioners of agile and scrum. The paradigm shift from a traditional to an agile environment is on the rise globally. The Scrum Alliance is a part of a movement and a mindset. It focuses on this massive change and enables the transformation of the world of work. \",/*#__PURE__*/e(\"strong\",{children:\"The Scrum Alliance is the largest certification and membership organization for agile and scrum.\"})]}),/*#__PURE__*/e(\"p\",{children:\"The organization enables more and more companies to adopt scrum. Besides this, it also facilitates proper and effective scrum practices. Their primary aim is to build member advocacy. Additionally, it facilitates a strong network of scrum practitioners. With the adoption of scrum in most enterprises, career prospects have also increased. If you\u2019re planning to thrive in a scrum career, the Scrum Alliance is ever-ready to lend a helping hand.\"}),/*#__PURE__*/e(\"p\",{children:\"The three most prominent offerings of the Scrum Alliance include education, community, and advocacy. Let\u2019s take a look at each in detail.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Education\"}),/*#__PURE__*/e(\"p\",{children:\"Even if you\u2019re a very skillful person, certificates help you showcase your expertise in any technology. Having scrum certificates are proof that you possess scrum application knowledge. Moreover, you can prove that you\u2019re a skilled and experienced scrum practitioner when you apply for the position of a scrum master or another role. The Scrum Alliance is the one-stop destination for different scrum courses.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Community\"}),/*#__PURE__*/e(\"p\",{children:\"The Scrum Alliance has 350,000+ members across the globe, allowing you to connect with like-minded peers. And new people join every day. So there\u2019s no shortage of innovative and brilliant ideas. You can join the community in person or virtually. This includes both local groups and online communities.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Advocacy\"}),/*#__PURE__*/e(\"p\",{children:\"The members of the Scrum Alliance advocate for each other. They help employers realize the benefits of hiring certified scrum practitioners. They also advocate for all their members, thus helping them build a sound career. As a result, they help people succeed with scrum knowledge.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"The History of the Scrum Alliance\"}),/*#__PURE__*/e(\"p\",{children:\"The founders established this nonprofit association in 2001. Founders included Mike Cohn, Esther Derby, and Ken Schwaber. Over time, they have certified 750,000+ practitioners globally. Mike Beedle is the creator of the Enterprise Scrum framework. Schwaber mentioned that Beedle helped take scrum forward. Also, Jeff Sutherland and Schwaber were together responsible for the creation of scrum processes in OOPSLA\u201995.\"}),/*#__PURE__*/e(\"p\",{children:\"Their mission is to provide guidance and inspiration to organizations, leaders, and individuals. In other words, their vision is to create prosperous, joyful, and sustainable workplaces. The Scrum Alliance plans to achieve this with the best principles, values, and practices.\"}),/*#__PURE__*/e(\"h2\",{children:\"What Certifications Does the Scrum Alliance Provide?\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum Alliance certifications help individuals and organizations distinguish themselves. You can establish yourself as a professional agile practitioner after acquiring one of these!\"}),/*#__PURE__*/e(\"img\",{alt:\"scrum alliance\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,sXgmXhTs3DdQajBz4Bim18bNlhc.png?originalFilename=scrum_alliance_certification.png\",src:\"https://framerusercontent.com/images/sXgmXhTs3DdQajBz4Bim18bNlhc.png\",srcSet:\"https://framerusercontent.com/images/sXgmXhTs3DdQajBz4Bim18bNlhc.png 579w\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified ScrumMaster\"}),/*#__PURE__*/e(\"p\",{children:\"A scrum master facilitates an agile team and enables the implementation of scrum. Certified ScrumMaster (CSM) is an introductory course for those who wish to be perfect for the role of a scrum master. To become a certified scrum master, you\u2019ll need to attend a 16-hour course. A certified scrum trainer will teach you the basics of scrum and the scope of your role. Once the course is completed, take the CSM test, which needs you to answer 37 out of 50 questions correctly.\"}),/*#__PURE__*/e(\"h3\",{children:\"Advanced Certified ScrumMaster\"}),/*#__PURE__*/e(\"p\",{children:\"If you have a year or two of experience being a scrum master, it\u2019s time to amp up your game. Advanced Certified Scrum Master (A-CSM) by the Scrum Alliance will help you develop a mastery over the subject. Besides this, it helps a scrum master polish their skills. You have to be a certified scrum master to enroll in this course. The course will enhance your foundational knowledge and help you to stand out in the global market. You\u2019ll be a member of the Scrum Alliance community and be of great value to your employer as a highly trained professional in agile.\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified Scrum Professional-ScrumMaster\"}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re on the scrum master track, develop the ultimate expertise. The Certified Scrum Professional-ScrumMaster (CSP-SM) course requires an A-CSM as a prerequisite. You\u2019ll also require a valid two years of work experience as a scrum master. This certificate will create a gateway to attract more potential employers. It\u2019ll also reward you with a premium subscription to Comparative Agility, the world\u2019s largest platform for agile assessment and continuous improvement.\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified Scrum Product Owner\"}),/*#__PURE__*/e(\"p\",{children:\"A scrum product owner has the responsibility of maximizing the value of a product. If you\u2019re close to the business side of any project, then this introductory Certified Scrum Product Owner course is perfect for you. You\u2019ll learn the scope of a product owner\u2019s role and connect with certified agile practitioners. You\u2019ll also receive a two-year membership to the Scrum Alliance.\"}),/*#__PURE__*/e(\"h3\",{children:\"Advanced Certified Scrum Product Owner\"}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019ve been a part of the scrum team for over a year, this course is for you. As a prerequisite, you have to have a Certified Scrum Product Owner certificate. This course will make you a product expert, and the industry will recognize you as someone who defines business value and delivers business results.\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified Scrum Professional-Product Owner\"}),/*#__PURE__*/e(\"p\",{children:\"If you\u2019re certified in Scrum Product Owner and wish to explore the details of the product owner track, the Certified Scrum Professional-Product Owner (CSP-PO) course is for you. Get the most out of the business environment. In this course, you\u2019ll learn how to interact with users and customers. You\u2019ll become an expert in managing product backlog and eventually strengthen your way of validating product assumptions.\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified Scrum Developer\"}),/*#__PURE__*/e(\"p\",{children:\"A scrum developer is a skilled member of a scrum team. They have excellent skills in the scrum method and can work with any scrum team. The Certified Scrum Developer Track course is ideal for software developers wishing to flourish in the scrum environment. The course will enhance your skill and make you an expert in agile development. You can also showcase your skills and understanding of scrum methodology to your peers or potential recruiters.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified Scrum Professional\"}),/*#__PURE__*/e(\"p\",{children:\"Certified Scrum Professional is for developers wishing to achieve the best in a scrum-based firm. This course requires an active CSD for enrollment and a minimum of three years of experience in scrum methodology. You\u2019ll also receive a premium subscription to Comparative Agility and attract more recruiters.\"}),/*#__PURE__*/e(\"h3\",{children:\"Team Coach\"}),/*#__PURE__*/e(\"p\",{children:\"A certified team coach manages a subset of a company or a faction of people involved in a project. If you have good leadership skills, it\u2019s time to put them to use. Prerequisites for the Team Coach course include an active CSP-PO, CSP-SM, or CSP.\"}),/*#__PURE__*/e(\"h3\",{children:\"Enterprise Coach\"}),/*#__PURE__*/e(\"p\",{children:\"Agile and scrum call for a lot of challenges. Thus, a company needs someone to take charge and guide everyone involved through the functioning of a scrum environment. A certified enterprise coach is an ideal person for this. Prerequisites for the Enterprise Coach course include an active CSP-PO, CSP-SM, or CSP.\"}),/*#__PURE__*/e(\"h3\",{children:\"Scrum Trainer\"}),/*#__PURE__*/e(\"p\",{children:\"Become a certified scrum trainer if you have in-depth knowledge on the subject. Explain to others what makes up the foundation of scrum. Also, help them grasp the principles and values involved in the scrum environment. Prerequisites for the Scrum Trainer course include an active CSP-PO, CSP-SM, or CSP.\"}),/*#__PURE__*/e(\"h3\",{children:\"Certified Agile Leadership\"}),/*#__PURE__*/t(\"p\",{children:[\"The Certified Agile Leadership (CAL) courses focus on exercising proper leadership in a scrum-based firm. The first level of this course focuses on leaders looking forward to improving their workplaces with agile metrics, practices, and values. The second level of this course consists of workshops. In the workshops, you\u2019ll connect with experts from around the world. The workshops will teach you to practically implement your skills. You\u2019ll share your ideas and learn from leaders at renowned global organizations. It also dives deep into \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/12-agile-principles\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"agile and scrum-\"})}),\"related topics.\"]}),/*#__PURE__*/e(\"h2\",{children:\"How Does Scrum Help Improve Application Delivery?\"}),/*#__PURE__*/e(\"p\",{children:\"Application delivery refers to the quick and efficient delivery of functionalities to users. For instance, online flight ticket booking software is becoming mainstream nowadays. Delivering a flawless interface free of bugs to the customer is the end goal. In this case, they should have access to different airlines, facilities, and flight durations. Besides this, the application is responsible for keeping the costs updated.\"}),/*#__PURE__*/e(\"p\",{children:\"Now, a flight booking application is quite complicated since it has multiple modules like flight searching, passenger profile, and booking management. If you use scrum, the application is divided into multiple sprints. After each sprint, the client can check the status of the application. They can convey their queries and let the developers know if they need any additional features. Unlike traditional methodologies, the development, as well as the testing team, gets less burdened with the workload. The load of the application and defect count during the final deployment gets reduced, thereby resulting in quicker and easier delivery.\"}),/*#__PURE__*/t(\"p\",{children:[\"Scrum helps in improving application delivery. \",/*#__PURE__*/e(\"strong\",{children:\"When different teams work together, they can eliminate flaws early. \"}),\"There are many ways it facilitates efficient delivery of functionalities. Let\u2019s take a look at how scrum promotes enhanced application delivery.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Improvement Leads to Periodic Deliveries\"}),/*#__PURE__*/t(\"p\",{children:[\"A project is all about fulfilling client needs. For that, \",/*#__PURE__*/e(\"strong\",{children:\"early feedback is a must. \"}),\"When feedback comes frequently, teams can make changes quickly. As a result, scrum facilitates continuous improvement. In some cases, the client doesn\u2019t provide full project requirements. Sometimes, all the team has is a vague outline. Continuous feedback and periodic deliveries become even more necessary. In conclusion, scrum allows a firm to meet customer expectations. Moreover, the process takes less time. Companies like Plutora that follow scrum values and have experienced and certified scrum professionals can deliver quality product in the expected time.\"]}),/*#__PURE__*/e(\"p\",{children:\"In most cases, scrum sprints are shorter than expected. For instance, results are ready for testing in about one to four weeks. Thus, it encourages the development of new features. Additionally, it speeds up the fixing of bugs and doesn\u2019t give customers much chance to complain!\"}),/*#__PURE__*/e(\"h3\",{children:\"Incremental Development Meets Market Conditions\"}),/*#__PURE__*/e(\"p\",{children:\"First of all, let us understand what incremental development means. First, the client provides the project requirements. In a scrum-based environment, a company holds a planning meeting. After that, team leaders and managers analyze their needs. Then, they set priorities for different tasks. After that, the team members have to clarify their doubts. They further estimate what to develop in the next iteration.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Most importantly, if the sprint permits time, they analyze the upcoming requirements. All the while, the team members have to keep priorities in mind. This kind of incremental development helps a firm meet market conditions. These market conditions include on-time delivery, easy navigation, and a bug-free interface.\"}),/*#__PURE__*/e(\"h3\",{children:\"The Higher the Product Quality, the Happier the Clients\"}),/*#__PURE__*/e(\"p\",{children:\"High-quality products are one of the biggest benefits of scrum. But maintaining the quality with partial deliveries can be challenging. Teams can solve this problem by calculating metrics. Usually, the calculation of metrics should occur at the end of each iteration. It allows teams to concentrate only on aspects that need improvement. The development team can focus on fresh issues. Thanks to frequent testing, they can resolve issues sooner. Better performance also leads to a fast response to different market demands.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Better Communication Within Different Teams\"}),/*#__PURE__*/e(\"p\",{children:\"Delivering all functionalities to customers flawlessly is a firm\u2019s responsibility. In an agile framework, communication between teams improves. The members can collaborate well to achieve the goal of the company. When there\u2019s transparency among team members, sprint objectives are clear. Teams make advancements with every iteration.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"After that, in the client meeting, they present the client with the progress. It increases task visibility as each team member can track the progress. All in all, a scrum meeting helps in getting a better retrospective. It also enhances the scope for betterment of the product.\"}),/*#__PURE__*/e(\"h3\",{children:\"Faster Delivery of Products to Customers\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scrum delivers value to the end-user about 30 to 40% faster than the traditional model. \"}),\"A dedicated team analyzes client needs and provides clarity in real-time. Also, separating high-priority tasks from lower-priority ones reduces risks. As we know, clients have certain expectations from a project.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Because stakeholders and product owners are closely involved, there\u2019s better transparency. This also leads to the effective management of expectations. Since scrum involves sprints, you release the product early. No need to wait for the entire development cycle to complete!\"}),/*#__PURE__*/e(\"h3\",{children:\"Higher Customer Engagement and Satisfaction\"}),/*#__PURE__*/e(\"p\",{children:\"One of the most vital goals of scrum is high customer satisfaction. The enterprise can keep the customers involved in the process. When client engagement is better, the company can quickly respond to change. Moreover, every sprint review demonstrates functionality to stakeholders. With every release, customers can offer their opinions on the product. In the next sprint, the team members can accommodate the fixes.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Additionally, the flexibility to point out a change at any point increases client trust. Moreover, when they can see a firm implementing the changes right away, it creates a positive impact on clients. Thus, better business engagement is key to customer satisfaction.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Should I Care as an Organization?\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum benefits companies more than you think. Besides increasing customer satisfaction, scrum encourages togetherness in a firm. Let\u2019s take a look at how scrum can benefit an organization. Then, we\u2019ll go on to see why you should care about the Scrum Alliance as an organization.\"}),/*#__PURE__*/e(\"h3\",{children:\"The Importance of Scrum for an Organization\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve already seen how scrum benefits the end user. But it also offers benefits for teams. Since the sprint durations are short, team members have to learn new concepts in a short time. They can push their spirits up and go beyond limits to learn these new concepts. As a result, they learn to adopt an accelerated learning approach. Let\u2019s take a look at how important it is for a firm.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Boosted Employee Morale and Motivated Teams\"}),/*#__PURE__*/e(\"p\",{children:\"When the entire team collectively makes a decision, they realize their true potential. Knowing their capabilities enhances employee morale. In every company, there are unspoken barriers between managers and team members. In a traditional environment, team members have no control over the decision-making process. They rely on managers for big decisions. But in a scrum environment, there are better relationships between people working in a firm. A peer relationship with the product owner breaks uncomfortable barriers. It keeps employees motivated to reach the company goal.\"}),/*#__PURE__*/e(\"p\",{children:\"A cross-functional work environment also allows people to learn new skills. Team members with knowledge about something are free to share their expertise. They feel liberated and others gain knowledge. All in all, it\u2019s a win-win situation for product owners, managers, and team members. Moreover, sharing knowledge also provides a firm business development base. For instance, if a team member abruptly leaves, such a situation can usually cause great panic. Also, it can create pressure to recruit someone new instantly. But with scrum, everyone has basic knowledge about company procedures. This ensures that the work in progress doesn\u2019t pause.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Greater Job Satisfaction, Increased Productivity\"}),/*#__PURE__*/e(\"p\",{children:\"The active involvement of every team member makes them feel valuable. When a person feels valued, it increases positivity among a group of people. The same goes for a company. When everyone is a part of a process, it increases job satisfaction among employees. They love what they do and increase the productivity of a company as a whole.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Every sprint has working hours allocated to it. This makes sure that the employees don\u2019t have to work overtime. Everyone wants to go home and relax after a hectic day at work. Otherwise, it results in burnout. \",/*#__PURE__*/e(\"strong\",{children:\"Sustainable work practices prevent burnout. \"}),\"Creating a work-life balance enables people to indulge in hobbies. When employees have enough time to engage in leisure hours, they can contribute a lot to a firm. It\u2019s important to take a break from work and give some time to personal interests.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Scrum also encourages team members in achieving autonomy. As a result, it empowers them to take a step further for the sake of the organization. Additionally, they\u2019re likely to stay for the long haul and enable the company to reach new heights.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Increased ROI and Relevant Metrics\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum projects have a shorter time to market. As a result, the returns on investment are high. Thanks to regular feedback, teams can make frequent corrections. All in all, it\u2019s less time-consuming in the later processes. With reduced expenses and greater efficiency, ROI is bound to increase. Scrum involves up-front testing and automation. Consequently, this means less wastage of work. It also enables quicker deployments. It might seem like the investment is higher in the beginning. But in the end, it\u2019s worth it. The returns are likely to be higher than expected in a scrum-based environment.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum teams use metrics for time and cost estimation. It also measures the performance of the project with optimum accuracy. Scrum metrics facilitate accurate decisions. These decisions are also more relevant to increasing profits. In a very short time, the developers can present visibility of task progress. Metrics help in comparing the expected outcomes with actual outcomes. In a traditional environment, you have to wait until project completion to know its value. But in a scrum-based system, you can know the value of a project before it reaches its end.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"4. More Control Over the Project\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum teams can adjust priorities at each sprint interval. Consequently, the entire team gains more control over any project. It also becomes easier for a company to have fixed-price and fixed-time projects. Besides, better control over a project enables easy accommodation of changes. This, in turn, allows the project team to handle market demand. Overall, it leads to refined project practices.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Since the teams communicate well, they can carry out tasks according to a set plan. As long as team members feel confident about their abilities, they\u2019re free to implement. When the product owner, managers, and team members all have the chance to take charge of company processes, the result is impeccable. In other words, complexity decreases when everyone puts their heads together.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"5. Fewer Risks, Negligible Losses\"}),/*#__PURE__*/e(\"p\",{children:\"Before diving into how a scrum-based approach reduces risks, let\u2019s look at the worst-case scenario. After planning and implementing procedures, someone realizes that it\u2019s all going to fail. The ROI is going to be zero. What\u2019s the best you can do in such a situation? Of course, you need to focus on minimizing any losses. If a project is bound to fail, it better fail as early as possible. In the initial stages of project development, less money is at stake. As it progresses, the company incurs more costs.\"}),/*#__PURE__*/t(\"p\",{children:[\"We usually associate failure with high losses in a traditional environment. \",/*#__PURE__*/e(\"strong\",{children:\"Scrum ensures that if a project fails, it fails early\u2014meaning it follows the concept of inexpensive failure. \"}),\"Scrum acts as a driving force in the quick release of tangible products. As a result, unsuccessful attempts come into the limelight as soon as possible. Even if the product owner and managers decide to terminate the project development after the first sprint, the risks of losing it all are mitigated.\"]}),/*#__PURE__*/e(\"p\",{children:\"As for fewer risks, regular feedback mitigates the risk of not meeting the expectations of the client. Similarly, transparency reduces the risk of failing to detect bugs at the right time. The flexibility to add or modify requirements reduces the cost of change. Thus, it lowers the risk of investment and protects the business environment from unforeseen circumstances.\"}),/*#__PURE__*/e(\"h3\",{children:\"How Is the Scrum Alliance Beneficial to Organizations?\"}),/*#__PURE__*/e(\"p\",{children:\"The Scrum Alliance helps a firm enjoy financial benefits more than ever. A certified agile coach can benefit your organization by enabling teams to see below the surface. This means they can help teams assess areas where they\u2019re lacking. Thus, it will help them reach their full potential. Through questioning, sharing expertise, role modeling, and self-discovery, a scrum certification can benefit everyone associated with a firm.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"Summing It Up\"}),/*#__PURE__*/e(\"p\",{children:\"Scrum is an important part of any enterprise based on an agile framework. It adopts a collaborative approach to achieve the best results in a firm. Improved engagement and enhanced coordination are some prominent perks. It\u2019s the best approach in the case of changing requirements. As a result, enterprises that need quick results thrive in a scrum environment. For example, by providing continuous feedback, scrum promotes a high-quality product.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Moreover, scrum increases the overall value offered too. Even if you\u2019re already used to the scrum framework, the Scrum Alliance can help you take it a step further. Every day, new agile techniques come up. Certified scrum professionals can bring them into the limelight and help a company achieve its true potential.\"})]});export const richText3=/*#__PURE__*/e(i.Fragment,{children:/*#__PURE__*/t(\"p\",{children:[\"In the past year we\u2019ve been riding a wave of unprecedented interest in our Plutora products. We\u2019ve had over 70% year-on-year growth in our sales pipeline and more than 50 percent year-on-year growth in new contracts signed. These last 12 months we\u2019ve been riding high with a record turnout at our annual customer event, Plutora Connect. We were also recognized as a Strong Performer in \",/*#__PURE__*/e(o,{href:\"https://go.plutora.com/forrester-value-stream-management?utm_campaign=Inbound_campaign&utm_source=blog_content_box_eguide\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"The Forrester New Wave\u2122: Value Stream Management Tools\"})}),\", and named a top 3 vendor in the \",/*#__PURE__*/e(o,{href:\"https://go.plutora.com/devops-2020-top3\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"EMA DevOps 2020 report\"})}),\".\"]})});export const richText4=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"But the momentum doesn\u2019t end there. Inc. Magazine has again named Plutora to its annual \",/*#__PURE__*/e(o,{href:\"https://www.inc.com/inc5000/2019/top-private-companies-2019-inc5000.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Inc. 5000 list\"})}),\", the most prestigious ranking of the nation\u2019s fastest-growing private companies. The list is a who\u2019s who of the most successful companies within the American economy\u2019s most dynamic segment\u2014its independent small businesses. \"]}),/*#__PURE__*/e(\"p\",{children:\"Even more impressively, only one in four companies make the list more than once, as it becomes much harder to do as revenue grows. Our second inclusion alongside other companies who have become hugely successful, shows just how far Plutora has come, and how much potential it has to continue to grow. \"}),/*#__PURE__*/e(\"p\",{children:\"Not only have the companies on the 2019 Inc. 5000 been competitive within their markets, but the list as a whole shows staggering growth compared with prior lists. The 2019 Inc. 5000 achieved an astounding three-year average growth of 454%, and a median rate of 157%. The Inc. 5000\u2019s aggregate revenue was $237.7 billion in 2018, accounting for 1,216,308 jobs over the past three years.\"}),/*#__PURE__*/e(\"p\",{children:\"Plutora\u2019s inclusion also reinforces what we are hearing in conversations with prospects and customers. Every company is becoming a software company and consumers are demanding better, faster access to goods, information and services.\"}),/*#__PURE__*/e(\"p\",{children:\"We plan to continue dedicating our time and resources to helping our customers be one step ahead of the next release. We are delighted to hold a spot on the 2019 Inc. 5000., and we plan to keep pushing forward with the goal in mind to continue the growth we\u2019ve seen into the future.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText5=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Behavior-driven development (BDD) is several things: a language for defining the behavior of an application; a collaboration tool for engineers, testers, and product managers; and a system for the automated testing of those behaviors. \",/*#__PURE__*/e(o,{href:\"https://dannorth.net/introducing-bdd/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Created by Dan North over a decade ago\"})}),\", BDD emerged from the then-new world of \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/12-agile-principles\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"agile software development practices\"})}),\" as a means to be an easier introduction to test-driven development (TDD). In this post, I\u2019d like to cover a few points, including what BDD is, the benefits it provides, and some guidance on how to introduce it to your team.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText6=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"BDD, What Is It?\"}),/*#__PURE__*/t(\"p\",{children:[\"This is not a complete picture, but let\u2019s start with the simple definition that \",/*#__PURE__*/e(\"strong\",{children:\"BDD is a form of software acceptance testing with some distinguishing characteristics.\"}),\" It\u2019s software testing that focuses on how the software should behave rather than how that behavior is implemented. Perhaps the most distinguishing characteristic is that BDD tests are written in common language such that they allow both technical and non-technical members of the team to describe the requirements of a software system. Let\u2019s start by taking a look at that language. In order to do that, we\u2019ll need a quick refresh on user stories.\"]}),/*#__PURE__*/e(\"h3\",{children:\"First, User Stories\"}),/*#__PURE__*/e(\"p\",{children:\"When Dan North was developing his concept of BDD in the early 2000s, the company he was working at was already describing features as user stories. If you aren\u2019t familiar with user stories, they\u2019re the definition of a feature of a software system from the perspective of a user of that system. A user story is written in a format that looks like this:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"As a\"}),/*#__PURE__*/t(\"em\",{children:[\"\\xa0type of user\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"I want\\xa0\"}),/*#__PURE__*/t(\"em\",{children:[\"some feature\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"So that\"}),/*#__PURE__*/e(\"em\",{children:\" I can achieve some outcome\\xa0\"})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s see what an example of this in practice might look like if you were overseeing the creation of a to-do style application. Maybe you have a persona of a busy adult who needs to find a way to better manage their responsibilities.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"As a\"}),/*#__PURE__*/t(\"em\",{children:[\" busy adult\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"I want \"}),/*#__PURE__*/e(\"em\",{children:\"to\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"maintain a list of tasks\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"So that\"}),/*#__PURE__*/e(\"em\",{children:\" I can visualize the work I need to do\"})]}),/*#__PURE__*/e(\"h3\",{children:\"Given, When, Then\"}),/*#__PURE__*/e(\"p\",{children:\"This style of writing is easy for everyone to understand, it doesn\u2019t contain implementation details, and it highlights why a feature is important for a given persona. The user story format inspired the BDD format. A BDD test is written like this:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Given\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"some context\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"When\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"some action or event occurs\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"Then\"}),\" \",/*#__PURE__*/e(\"em\",{children:\"some outcome occurs\"})]}),/*#__PURE__*/e(\"p\",{children:\"To go back to our to-do list application, let\u2019s imagine we\u2019re working on that user story to maintain a list of to-do items. Here\u2019s how that might look with a BDD test:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Given\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"I\u2019ve logged in to the to-do app\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"When\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"I type in a to-do item\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"And\"}),\"\\xa0\",/*#__PURE__*/t(\"em\",{children:[\"I hit the \u201Center\u201D key\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"Then\"}),\" \",/*#__PURE__*/e(\"em\",{children:\"the new item is added to a list of to-do items\"})]}),/*#__PURE__*/t(\"p\",{children:[\"There are several cool technologies, such as \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/ci-cd-tools/testing-tools/cucumber\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Cucumber\"})}),\", that allow nontechnical folks to write test cases in this language and will generate a test that will pass once that feature is implemented. The language allows members of the team to collaborate and use the acceptance criteria of stories as automated, plain-language tests. While the language is an important part of BDD, we might think of it as just the \u201Cbehavior\u201D part. What about the \u201Cdriven development\u201D part?\"]}),/*#__PURE__*/e(\"h3\",{children:\"Red, Green, Refactor\"}),/*#__PURE__*/e(\"img\",{alt:\"behavior_driven development diagram\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,LLdG9XzIsjddXocho7kG7iFt8.png?originalFilename=behavior_driven_development_diagram.png\",src:\"https://framerusercontent.com/images/LLdG9XzIsjddXocho7kG7iFt8.png\",srcSet:\"https://framerusercontent.com/images/LLdG9XzIsjddXocho7kG7iFt8.png?scale-down-to=512 512w,https://framerusercontent.com/images/LLdG9XzIsjddXocho7kG7iFt8.png 603w\"}),/*#__PURE__*/e(\"p\",{children:\"To understand the \u201Cdriven development\u201D aspect, we need to briefly look at TDD. TDD is a software development practice that uses tests as the basis for designing good software. The process for TDD (and BDD by association) is what\u2019s referred to as the red, green, refactor cycle:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Write a test for a feature that isn\u2019t yet implemented in your application.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Run the test; it should fail (red).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Make the test pass as quickly as possible (green).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Clean up the design of the implementation and reduce duplication (refactor).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Repeat!\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The TDD process is centered around quick feedback loops\"}),\" where the engineer frequently returns to a state of working software evidenced by passing tests. BDD evolved from TDD at least in part to make the test-driving process more accessible to new agile teams. The important aspects of TDD that remain in BDD are the emphasis on feedback loops, automated testing, and writing failing tests before the implementation of a feature.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Holistic BDD\"}),/*#__PURE__*/e(\"p\",{children:\"We started out with the simple definition that BDD is a form of software acceptance testing. What we\u2019ve seen is that it\u2019s really a practice.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Scenarios emerge from well-defined features.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Those scenarios can and ideally should be written in collaboration between engineers and business folks.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The created scenarios are the basis for a failing test in the red, green, refactor feedback cycle.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The tests pass and give evidence of working software.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Cool, so that\u2019s what it is, but how exactly does it help your team?\"}),/*#__PURE__*/e(\"h2\",{children:\"How Will BDD Help My Team?\"}),/*#__PURE__*/e(\"p\",{children:\"BDD offers several benefits to teams. Like many agile practices, it helps eliminate waste. Here are some of the benefits BDD gives your team:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A suite of tests demonstrating that features are working\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Less rework over misinterpreted requirements or acceptance criteria\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A more proactive approach to testing for your development and testing team\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s examine each of these in a little more detail.\"}),/*#__PURE__*/e(\"h3\",{children:\"A BDD Test Suite\"}),/*#__PURE__*/e(\"p\",{children:\"If your development team isn\u2019t currently writing tests or is only doing a moderate amount of testing after feature development, a likely scenario is that the engineers on your team are less confident making changes to your application. If they don\u2019t have a suite of tests they can run that ensure the system still works, they have a few options to ensure the integrity of the application when developing new features:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Don\u2019t verify that the changes have broken anything, only \",/*#__PURE__*/e(\"em\",{children:\"manually \"}),\"test their feature.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Manually\"}),\" test the application while developing the feature to do a spot check.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"\u201CThrow it over the wall\u201D to the testing team; after all, that\u2019s why they\u2019re there, isn\u2019t it?\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The first option doesn\u2019t protect from regressions, and it involves a lot of manual verification that a feature works. The second relies on that engineer\u2019s understanding of the rest of the system and their personal bias on what to check and not check. Additionally, they\u2019re probably spending a lot of time manually checking and rechecking features. The third option increases the feedback loop by queuing up work for the testing team that then trickles back to the development team in the form of unmet requirements, and the process starts again. However, now when these engineers revisit the features for rework from the testing or acceptance team, they\u2019re likely to have forgotten some of the context from their initial work and introduce waste by relearning and reworking the problem at hand. Waste is the unifying factor here.\"}),/*#__PURE__*/e(\"h3\",{children:\"Tests as a Means to Eliminate Waste\"}),/*#__PURE__*/e(\"p\",{children:\"Tests eliminate waste by giving engineers and testers confidence. They\u2019ll have confidence that the following will happen:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The feature they\u2019re working on is done.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"They haven\u2019t broken other features.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Their tests are a replacement for wasting time manually verifying each feature.\"})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Adopting BDD, similarly to adopting TDD, helps give your team confidence in the form of a test suite.\"}),\" BDD, because of the focus on behavior and consistent language, is easier for new teams to adopt. So if your team isn\u2019t currently using tests to grow the software, this is one benefit that adopting BDD will give you.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Clearly Communicate Requirements\"}),/*#__PURE__*/t(\"p\",{children:[\"While the test suite improves team confidence, the \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/how-to-boost-enterprise-software-testing-predictability\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"creation of the tests can be a powerful tool\"})}),\" to improve the communication between the technical and product people on your team. In BDD, the acceptance criteria of a story become the test. In our earlier example, we had a feature that stated our busy businessperson persona needed a list of their to-do items:\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Given\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"I\u2019ve logged in to the to-do app\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"When\"}),\" \",/*#__PURE__*/t(\"em\",{children:[\"I type in a to-do item\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"And\"}),\"\\xa0\",/*#__PURE__*/t(\"em\",{children:[\"I hit the \u201Center\u201D key\",/*#__PURE__*/e(\"br\",{})]}),/*#__PURE__*/e(\"strong\",{children:\"Then\"}),\" \",/*#__PURE__*/e(\"em\",{children:\"the new item is added to a list of to-do items\"})]}),/*#__PURE__*/t(\"p\",{children:[\"It\u2019s very closely related to, if not nearly word for word, what you would expect to see as acceptance criteria to such a story. \",/*#__PURE__*/e(\"strong\",{children:\"BDD provides a framework to create a conversation between the business folks on your team and the engineers. \"}),\"Let\u2019s assume for a minute that we create this test at the start of feature development for this user story. The process for coming up with this test could look something like this:\"]}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The product folks on the team come up with a story that has clearly defined acceptance criteria.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"They discuss the acceptance criteria with the engineering team.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Representatives from your engineering and testing teams sit down with a business analyst or product manager and write the test together.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Collaboration as a Means to Eliminate Waste\"}),/*#__PURE__*/e(\"p\",{children:\"The goal is to eliminate waste by reducing the number of assumptions each group makes about what\u2019s required for the feature to be finished. The engineering team and the product team are communicating and have created an automated definition for when the feature is complete. We waste less time revisiting code that was implemented without a clear understanding of the acceptance criteria. Creating these tests earlier in the development process also reduces testing time.\"}),/*#__PURE__*/e(\"h3\",{children:\"Pull Testing Up\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s not uncommon for the relationship between a testing group and development group to be burdened by waste. If your organization has manual testers, this can mean that every time a feature gets submitted for review, they\u2019ll run through an entire manual testing suite, much of which is unrelated to the feature being developed. Every time the feature is denied due to regression or incompleteness, this manual process starts again, duplicating the waste. This is on top of the wasted time between an engineer submitting a feature for testing and the time that it actually gets tested.\"}),/*#__PURE__*/e(\"p\",{children:\"In BDD, we start testing much earlier in the process. Testers can participate in the creation of the test case along with engineers and business analysts. Similar to the time savings for engineers, testers can benefit from the automation of test scenarios and can focus their efforts on parts of the app that may be more difficult to test or can start to participate more actively in the development process.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The sooner we can definitively determine whether our software is working or not working, the sooner we can ship it or fix it.\"}),\" There\u2019s no sooner way to tell than by starting development with a test.\"]}),/*#__PURE__*/e(\"p\",{children:\"Alright, so we can improve our engineers\u2019 confidence to eliminate waste. We can improve the communication among the engineering team, testing team, and product teams to eliminate waste. We can also improve feedback times by pulling testing up in the process to, you guessed it, eliminate waste. These are some of the benefits you get by practicing BDD. But how do you go about introducing BDD into your team?\"}),/*#__PURE__*/e(\"h2\",{children:\"Adopting BDD\"}),/*#__PURE__*/t(\"p\",{children:[\"Behaviors, processes, and norms are difficult to change. BDD affects all of these things and isn\u2019t a sweeping change you can expect to implement in a short period of time. I believe changes like this that impact a team\u2019s flow and norms should be treated as experiments, should start small, and should be frequently measured. \",/*#__PURE__*/e(\"strong\",{children:\"The current state of your team should be taken into account when defining what success looks like.\"}),\" If your team is fragmented, has no testing, and releases software infrequently, then simply getting more collaboration on the team might be a great first outcome. There\u2019s no one-size-fits-all adoption method or definition of success.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Define the Outcomes You Want\"}),/*#__PURE__*/e(\"p\",{children:\"Adopting BDD might be an attempt to solve a number of different problems. Maybe you want to reduce defects, improve cycle time, or make it easier for new engineers to onboard to your project. Pick something measurable. Defect rates or feature turnaround times are easy to measure compared to something like measuring code quality.\"}),/*#__PURE__*/e(\"h3\",{children:\"Continuous Integration\"}),/*#__PURE__*/e(\"p\",{children:\"Automated tests will be more valuable if they fail your build process. The test suite should be included in your continuous integration steps. If you aren\u2019t doing continuous integration, that\u2019s a more important problem to solve than adopting BDD. When the tests fail, it should be apparent that they\u2019re failing to everyone on the team. An information radiator, such as a large monitor, should show the current status of your test suite to your team.\"}),/*#__PURE__*/e(\"h3\",{children:\"Start Together\"}),/*#__PURE__*/e(\"p\",{children:\"A decision that affects the team should be made with the team. The team is more likely to take ownership of a practice that everyone believes can help them work more efficiently. Help the team own the solution.\"}),/*#__PURE__*/e(\"h3\",{children:\"Start Small\"}),/*#__PURE__*/e(\"p\",{children:\"And then start smaller. Your team\u2019s current situation and context matter. If you\u2019re considering introducing BDD on a large application, your first test is going to be difficult to write. Success might be that, even without an automated test, you get representatives from all the facets of your team in a room to transform success criteria into the given, when, then format.\"}),/*#__PURE__*/e(\"p\",{children:\"You could progress to the point where the team is test-driving each feature by progressively adopting BDD. If you want to progressively adopt it, you\u2019ll want to start by changing the way teams think about features. The first thing to work on would be to ensure that every feature, before it\u2019s worked on by the team, has well-defined acceptance criteria. Once this is a consistent quality on the features your team is working on, it\u2019s not that much of a stretch to get them to start creating the given, when, then scenarios when starting a feature.\"}),/*#__PURE__*/e(\"p\",{children:\"Even if they\u2019re just writing them out but not creating tests, you want them to be thinking this way. Similarly, from this point, it\u2019s not much of a stretch to get your first actual test implemented in the system. It might even be going back to write a test for a feature that already exists, like a login feature. Make small adjustments and course correct.\"}),/*#__PURE__*/e(\"h2\",{children:\"Continuously Improve, Eliminate Waste\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve covered a lot of ground concerning BDD. As with any other agile practice, it\u2019s always best to look for bottlenecks in your system and find the right place to make continuous improvements. If you want to make some large changes quickly, then perhaps you could take a look at Plutora\u2019s\\xa0\",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/value-stream-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"value stream management\"})}),\" platform that helps you build, test, and deploy your new features. Above all,\\xa0be pragmatic. Eliminate waste, improve feedback loops,\",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/top-10-tips-improving-software-testing-communication\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\" improve communication among members of your team\"})}),\", and foster an environment for continuous improvement.\"]})]});export const richText7=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Over the last several years, software development companies have increasingly adopted DevOps workflows. According to \",/*#__PURE__*/e(o,{href:\"https://dzone.com/articles/devops-trends-2019-what-you-need-to-know\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"one study\"})}),\", 10% of organizations had fully embraced DevOps in 2017 and 17% had in 2018.\"]}),/*#__PURE__*/e(\"p\",{children:\"In large part, this is due to the fact that DevOps workflows enable software development teams to ship releases faster and more frequently, respond to incidents faster, strengthen camaraderie through collaborative working, learn more skills by merging dev and ops responsibilities, and build stronger communities by regularly soliciting feedback from their user community\u2014and letting that feedback inform the product roadmap.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText8=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"What Is DevOps?\"}),/*#__PURE__*/t(\"p\",{children:[\"Simply put, \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/devops\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DevOps\"})}),\" is the process in which development and operations teams are merged into a cohesive unit to speed up development lifecycles by bringing tools, processes, and culture together in such a way that supports high-velocity releases.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Because of the benefits DevOps provides\u2014and the fact that today\u2019s leading organizations are increasingly adopting DevOps workflows, meaning others are likely to follow suit\u2014it comes as no surprise that \",/*#__PURE__*/e(o,{href:\"https://www.grandviewresearch.com/press-release/global-development-to-operations-devops-market\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"the global DevOps market\"})}),\" is projected to reach $12.85 billion by 2025, growing 18.6% each year until then.\"]}),/*#__PURE__*/e(\"p\",{children:\"While the upside of DevOps is self-explanatory, the new approach to software development is not without its downsides\u2014particularly as DevOps teams start to operate at scale. With so many moving parts to consider, and speed really being the underlying motivator for DevOps teams in the first place, it can be hard to gain visibility into the pipeline to see whether things stand at any given point in time.\"}),/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(o,{href:\"https://github.com/Hygieia/Hygieia\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Hygieia\"})}),\", an open source dashboard built by the fine folks over at Capital One. The team over there created Hygieia to solve the visibility problem outlined above. As a result, DevOps teams have more insight into their development pipelines and can build better software.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Is Hygieia?\"}),/*#__PURE__*/e(\"p\",{children:\"Hygieia is a configurable DevOps dashboard that provides a near real-time consolidated view of the entire delivery pipeline.\"}),/*#__PURE__*/e(\"img\",{alt:\"hygieia\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,WICTTnrYXUirYE5whfDB2oauIQ.png?originalFilename=hygieiadashboard-laptop-1.png\",src:\"https://framerusercontent.com/images/WICTTnrYXUirYE5whfDB2oauIQ.png\",srcSet:\"https://framerusercontent.com/images/WICTTnrYXUirYE5whfDB2oauIQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/WICTTnrYXUirYE5whfDB2oauIQ.png 791w\"}),/*#__PURE__*/e(\"p\",{children:\"The tool, which pulls data from other DevOps tools in a company\u2019s development pipeline, offers two distinct views: one for engineers and one for executives. With Hygieia, DevOps teams get an up-to-date view into the real-time status of their projects.\"}),/*#__PURE__*/e(\"p\",{children:\"Everyone on a development team\u2014or an executive team, for that matter, too\u2014can look into status at their own leisure. As such, Hygieia helps increase workplace transparency while establishing feedback loops to help continuously improve development processes.\"}),/*#__PURE__*/e(\"h2\",{children:\"What Metrics Can You See in the Hygieia Dashboard?\"}),/*#__PURE__*/t(\"p\",{children:[\"Hygieia gives engineering teams and managers deep visibility into the entire continuous integration and continuous delivery pipeline. As such, the open source tool provides a \",/*#__PURE__*/e(o,{href:\"https://www.infoq.com/news/2016/03/hygieia/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"number of benefits\"})}),\" to DevOps teams, including insight into:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The stories the teams are working on, where they stand, and how many have been completed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The volume of code being contributed, the frequency of those contributions, and the teams and individuals responsible for them\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The number of builds taking place, how many of them are failing, and what broke each build\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Static code analysis, security scans, unit test case results and test coverage functional test case results, and more\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Various environment and code deployment statuses in each of them\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The deployment pipeline that provides clear insight into which version of a piece of software was deployed in which environment and whether it failed\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"How code moves through the development lifecycle (e.g., from commit to build, to deployment, to QA, etc.)\\xa0\"})})]}),/*#__PURE__*/e(\"img\",{alt:\"hygieia\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,YWCd31AbMmLMpoOqEP9dWwd3Ys.jpg?originalFilename=hygieia-1024x574.jpg\",src:\"https://framerusercontent.com/images/YWCd31AbMmLMpoOqEP9dWwd3Ys.jpg\",srcSet:\"https://framerusercontent.com/images/YWCd31AbMmLMpoOqEP9dWwd3Ys.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/YWCd31AbMmLMpoOqEP9dWwd3Ys.jpg 1024w\"}),/*#__PURE__*/t(\"p\",{children:[\"The Capital One team is an \",/*#__PURE__*/e(o,{href:\"https://www.capitalone.com/tech/solutions/hygieia/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"open source-first organization\"})}),\" and has continued to update Hygieia since it was first released in 2015.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Are the Benefits of Hygieia?\"}),/*#__PURE__*/t(\"p\",{children:[\"For many companies, employees work around the globe. Traditional working hours don\u2019t exist. As such, coordinating massive software development projects across time zones can be an extremely challenging ordeal. With so many moving parts, it can be difficult for everyone to stay on the same page. It\u2019s not uncommon for at least \",/*#__PURE__*/e(\"em\",{children:\"some \"}),\"of those moving parts to get lost in the mix.\"]}),/*#__PURE__*/e(\"p\",{children:\"By providing a complete view of the entire development pipeline\u2014from story to code deployment in production\u2014Hygieia makes it that much easier to see whether something is broken. If so, a member of the development team, can take fast steps to fix it.\"}),/*#__PURE__*/e(\"p\",{children:\"Beyond that, Hygieia can help DevOps teams determine whether certain features or products are low quality. Armed with that information, they can decide to prioritize certain patches and fixes in the next sprint.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"The dashboard can also help teams figure out whether there is anything in their development processes that is holding them back. For example, they might see that test cases are taking too long to complete, That slows down the entire DevOps lifecycle.\"}),/*#__PURE__*/e(\"p\",{children:\"Despite these benefits, Hygieia is not as customizable as you might hope. After all, every DevOps team approaches software development differently. There might be a few tools that almost everyone uses (we\u2019re looking at you, Jenkins!). But for the most part, every DevOps tool suite is at least somewhat unique.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"To be fair, the Capital One team \",/*#__PURE__*/e(o,{href:\"https://medium.com/capital-one-tech/hygieia-3-0-contributing-to-our-expanded-open-source-roadmap-dd967ade7dc2\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"continues to innovate with Hygieia\"})}),\", so more customization may be built into the product in the future. For DevOps teams that prefer a more customized look into their pipelines, other options may be more beneficial.\\xa0\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Metrics Can You See in the Plutora Dashboard?\"}),/*#__PURE__*/e(\"p\",{children:\"We might be a bit biased here. But we believe that Plutora is the most helpful dashboard for today\u2019s leading DevOps teams. At a very simple level, it\u2019s a much more customizable platform that also supports analytics-style delivery.\"}),/*#__PURE__*/e(\"img\",{alt:\"Plutora Platform\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,uHyEGWQJ6dTE0lVdey1iBI9Wg.png?originalFilename=platform_diagram_marketecture_c-1024x855.png\",src:\"https://framerusercontent.com/images/uHyEGWQJ6dTE0lVdey1iBI9Wg.png\",srcSet:\"https://framerusercontent.com/images/uHyEGWQJ6dTE0lVdey1iBI9Wg.png?scale-down-to=512 512w,https://framerusercontent.com/images/uHyEGWQJ6dTE0lVdey1iBI9Wg.png 1024w\"}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s a brief overview of some of the metrics you can track with Plutora\u2019s value stream management platform:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Decision-making and analytics\"}),\", including \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/value-stream-mapping\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"value stream mapping\"})}),\", deep analytics, and comparative metrics, AI-powered predictive insights, audit and governance, pipeline oversight and traceability, and real-time collaboration\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Management and orchestration\"}),\", including release management and pipeline orchestration, hybrid environment management, and deployment management and orchestration\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Integration and common data model\"}),\", including tools integrations, normalized data models, and converged toolchains.'=\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Plutora delivers a number of benefits to DevOps teams like yours, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Accelerated delivery. \"}),\"Visualize metrics to eliminate clutter and waste from your development processes and identify constraints. Facilitate stronger collaboration between teams to move projects head faster.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Increased visibility. \"}),\"Enjoy complete visibility into your pipeline without having to hop from one interface to the next to increase productivity and have a better idea where things stand at any given point in time.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability. \"}),\"Continuously optimize your DevOps processes by analyzing where things are working and where they need to be improved so that your team remains productive and effective even while you scale.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Improved governance. \"}),\"Know exactly who owns what by defining hierarchical release with phases, dependencies, criteria gates, and milestones. Make sure nothing slips through the cracks while ensuring compliance along the way.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Supercharge Your DevOps Workflows With Plutora\"}),/*#__PURE__*/t(\"p\",{children:[\"Does your DevOps team have enough visibility into its production pipeline and workflows? If not, a platform like Plutora can help. Plutora provides a \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/business-intelligence/devops-dashboard\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DevOps Dashboard\"})}),\" that measures the throughput and stability of your software delivery process, identifying trends in productivity, quality, responsiveness, and predictability of work.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Devops Dashboard\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,PkpNVVMYDcrMqIMHyllrSgwaDw.png?originalFilename=Tableau-report-1024x589.png\",src:\"https://framerusercontent.com/images/PkpNVVMYDcrMqIMHyllrSgwaDw.png\",srcSet:\"https://framerusercontent.com/images/PkpNVVMYDcrMqIMHyllrSgwaDw.png?scale-down-to=512 512w,https://framerusercontent.com/images/PkpNVVMYDcrMqIMHyllrSgwaDw.png 1024w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(o,{href:\"https://www.plutora.com/evaluate-now\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Schedule a demo today\"})}),\" to see how your DevOps team can use Plutora to push out more feature-packed releases more frequently\u2014delighting your users and inspiring your engineers along the way.\"]}),/*#__PURE__*/t(\"p\",{children:[\"P.S. We also have other tools that support things like \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/release-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"release management\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/test-environment-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"test environment management\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/deployment-planning\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deployment planning\"})}),\", and \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/predictive-analytics\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"predictive analytics\"})}),\" you might want to take a look at. Plutora also supports a number of \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/integrations\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"integrations\"})}),\" you may also be interested in checking out.\"]})]});export const richText9=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"Has your laptop, phone, or projector ever stopped working when you needed it most? If so, you aren\u2019t alone. It\u2019s happened to me more times than I care to remember, and more often than not at the worst possible time. We expect these little glitches in consumer tech, but web applications come from a team of talented engineers and should be more reliable\u2014right?\"}),/*#__PURE__*/e(\"p\",{children:\"Unfortunately, web applications are often no more reliable than your laptop or phone.\"}),/*#__PURE__*/e(\"p\",{children:\"You may have some vivid memories of failed demos of web applications. You begin the demo. The team wants to show all their hard work, and your clients want to see their new product. The site starts to load, and . . . nothing happens. There\u2019s a blank screen. Reloading the page doesn\u2019t work either.\"}),/*#__PURE__*/e(\"p\",{children:\"You stall for as long as you can, blame the WiFi, the laptop, and anything you can think of, but finally it dawns on you something serious must have happened. The server is down, the code has a bug, or there\u2019s one of a hundred other possible scenarios that means you can\u2019t access that page today. All you can do is apologize, bow your head, and walk out meekly.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"What if you could solve these kinds of server maintenance problems by hiding the complexities of server maintenance?\"})}),/*#__PURE__*/e(\"p\",{children:\"That\u2019s what serverless aims to do. It handles the headaches of keeping the server up and running. It scales up and down to meet demand while you focus on your business.\"}),/*#__PURE__*/e(\"p\",{children:\"This post describes what the term serverless means, where you can find these services, and how you can maximize their value. We\u2019ll look at the benefits of making some of your infrastructure serverless, and we\u2019ll consider some of the trade-offs you should know about.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText10=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Serverless Runs on Servers!\"}),/*#__PURE__*/t(\"p\",{children:[\"The term serverless is a little misleading. It contains the word \u201Cless,\u201D which suggests that no servers are involved. However, serverless runs on servers. The word \u201Cless\u201D in this context means spending \",/*#__PURE__*/e(\"em\",{children:\"less\"}),\" time thinking about servers and more time developing new features for your customers.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Are the Must-Have Characteristics of Serverless Services?\"}),/*#__PURE__*/e(\"p\",{children:\"A service must have the following characteristics to be classed as truly serverless:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The provider handles installation, configuration, and upgrades of servers, operating system, and installed software.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"There\u2019s no configuration or manual intervention, whether one person or a thousand uses the service.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"If you don\u2019t use the service, you don\u2019t pay.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The more you use service, the more it costs.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Services may have more advanced features than this, but they have to at least contain these features to be part of the serverless category.\"}),/*#__PURE__*/e(\"h2\",{children:\"What Are the Most Popular Serverless Platforms?\"}),/*#__PURE__*/e(\"p\",{children:\"The most popular serverless platforms fall into three categories:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(o,{href:\"https://en.wikipedia.org/wiki/Function_as_a_service\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Functions as a service (FAAS)\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(o,{href:\"https://www.techopedia.com/definition/24900/storage-as-a-service-saas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Storage as a service (STaaS)\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(o,{href:\"https://www.techopedia.com/definition/29431/database-as-a-service-dbaas\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Database as a service (DBaaS)\"})}),\".\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s look at each one and consider its characteristics.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Functions as a Service (FaaS)\"}),/*#__PURE__*/t(\"p\",{children:[\"Functions as a service is the most popular use of a serverless platform. This kind of service allows you to upload your code, specify when to run it, and manage provisioning and maintenance of servers. \",/*#__PURE__*/e(o,{href:\"https://aws.amazon.com/lambda/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Lambda \"})}),\"was the first FaaS, and it\u2019s the most popular one available today. Other examples of FaaS are \",/*#__PURE__*/e(o,{href:\"https://en.wikipedia.org/wiki/Google_Cloud_Platform\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google Cloud Functions\"})}),\" and \",/*#__PURE__*/e(o,{href:\"https://en.wikipedia.org/wiki/Microsoft_Azure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Microsoft Azure Functions\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"2. Storage as a Service (SaaS)\"}),/*#__PURE__*/t(\"p\",{children:[\"Storage as a service was one of the first uses of a serverless platform. This kind of service allows you to store any kind of file, no matter what type or size, with effectively unlimited storage capacity. \",/*#__PURE__*/e(o,{href:\"https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Simple Storage Service\"})}),\" was the second service that AWS introduced, and it\u2019s still one of the most popular storage solutions. Other examples of SaaS are \",/*#__PURE__*/e(o,{href:\"https://azure.microsoft.com/en-us/services/storage/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure Storage\"})}),\" and \",/*#__PURE__*/e(o,{href:\"https://cloud.google.com/storage/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google Cloud Storage\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"3. Database as a Service (DBaaS)\"}),/*#__PURE__*/t(\"p\",{children:[\"Database as a service is one of the newer categories of serverless platforms. This service configures and maintains the database and is accessible through an application programming interface for any interaction. The provider handles configuration, maintenance, and performance optimization. Types of DBaaS include variations of NoSQL, SQL, and in-memory key-value stores. Examples of popular DBaaS include \",/*#__PURE__*/e(o,{href:\"https://aws.amazon.com/dynamodb/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS DynamoDB\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://www.cloudthread.io/blog/understanding-amazon-aurora-serverless-pricing\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Aurora Serverless\"})}),\", and \",/*#__PURE__*/e(o,{href:\"https://docs.microsoft.com/en-us/azure/sql-database/sql-database-serverless\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Azure SQL Database Serverless\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Serverless Helps You Focus on Business Logic\"}),/*#__PURE__*/t(\"p\",{children:[\"The trend among cloud providers Amazon, Google, and Microsoft is to help customers focus more on business logic and less on managing infrastructure.\",/*#__PURE__*/e(\"strong\",{children:\" Serverless is the natural evolution of cloud computing\"}),\", enabling you to write business logic or store the data that\u2019s vital to running your company without worrying about maintaining the underlying hardware.\"]}),/*#__PURE__*/e(\"p\",{children:\"At first, cloud providers offered the rental of entire servers or a rack of servers. Configuring bare hardware is time-consuming and prone to error, but at the time there were no other options.\"}),/*#__PURE__*/e(\"p\",{children:\"Next came the ability to rent a virtual machine (VM). Multiple VMs can run on a server, saving money and adding an extra layer of abstraction that saves you time.\"}),/*#__PURE__*/e(\"p\",{children:\"More recently, hosting containers have become a new, more cost-efficient way of hosting multiple services on a VM. Containers encapsulate the applications running in them, with no need to understand the underlying hardware.\"}),/*#__PURE__*/t(\"p\",{children:[\"Skip to the present day, and \",/*#__PURE__*/e(\"strong\",{children:\"serverless is the next level of abstraction on top of containers.\"}),\" Serverless platforms handle the creation and scaling of containers and VMs.\"]}),/*#__PURE__*/e(\"p\",{children:\"Below is a graph of the evolution of cloud computing. It starts with full servers, which require significant configuration, and proceeds to the minimal configuration required for serverless.\"}),/*#__PURE__*/e(\"img\",{alt:\"serverless\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,yGmrm4CAKnEBy2CGOwULDdvfY.png?originalFilename=serverless_diagram_a.png\",src:\"https://framerusercontent.com/images/yGmrm4CAKnEBy2CGOwULDdvfY.png\",srcSet:\"https://framerusercontent.com/images/yGmrm4CAKnEBy2CGOwULDdvfY.png?scale-down-to=512 512w,https://framerusercontent.com/images/yGmrm4CAKnEBy2CGOwULDdvfY.png 603w\"}),/*#__PURE__*/e(\"h2\",{children:\"What Are the Benefits of Serverless?\"}),/*#__PURE__*/e(\"p\",{children:\"Serverless doesn\u2019t solve every problem. How can you evaluate whether serverless is right for your use case? Convert a small portion of your infrastructure. Look for quick wins, such as file storage or encapsulated, stateless logic that\u2019s easy to extract and run independently.\"}),/*#__PURE__*/e(\"p\",{children:\"When you\u2019re trying out your proof of concept, keep these factors in mind: the amount of time you\u2019re spending on configuration and maintenance, and the amount you\u2019re spending as compared with a traditional server.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are four significant advantages of serverless.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. You\u2019ll Reduce the Time You Spend on Configuration and Maintenance\"}),/*#__PURE__*/e(\"p\",{children:\"Reducing the time you need to configure and maintain your system is arguably the greatest benefit of serverless. The salaries of operations engineers are always rising. Even more important, the demand for skilled engineers is increasing. For these reasons, finding staff who can configure and maintain complex systems is increasingly difficult.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"With the introduction of serverless, you can empower developers to build and manage services.\"}),\" This change gives your software developers the visibility and power to deploy and monitor production code easily. Your operations staff can focus on making deployments as easy as possible by breaking down the barriers between operations and development made famous by \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/agile-devops-effect-6-keys-software-delivery-evolution\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"DevOps practices\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"2. You May Save Money Using Serverless Instead of Traditional Servers\"}),/*#__PURE__*/t(\"p\",{children:[\"The cost benefits of using serverless over traditional servers are the reason many companies convert some or all of their architecture to serverless. This diagram shows how \",/*#__PURE__*/e(\"strong\",{children:\"serverless removes the upfront cost of using the traditional server route, thereby lowering the barrier to entry.\"})]}),/*#__PURE__*/e(\"img\",{alt:\"serverless\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,FEDcOxR1uRlVUZQpv8apgI06Ys.png?originalFilename=serverless_diagram_b.png\",src:\"https://framerusercontent.com/images/FEDcOxR1uRlVUZQpv8apgI06Ys.png\",srcSet:\"https://framerusercontent.com/images/FEDcOxR1uRlVUZQpv8apgI06Ys.png?scale-down-to=512 512w,https://framerusercontent.com/images/FEDcOxR1uRlVUZQpv8apgI06Ys.png 603w\"}),/*#__PURE__*/e(\"p\",{children:\"The initial cost of serverless is zero. Compare that with the high initial cost of using traditional servers (because you\u2019d need to decide the expected volume upfront). That cost is flat until the server is fully used, but then you\u2019d need more servers to handle the higher traffic.\"}),/*#__PURE__*/e(\"p\",{children:\"The cost-benefit will vary from business to business. The savings for businesses that are growing rapidly will far outweigh those where the growth is slower or flat. If the infrastructure isn\u2019t growing, then the cost isn\u2019t really much of a benefit over traditional servers.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. FaaS Encourages Small, Encapsulated, and Independently Deployable Services\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(o,{href:\"https://en.wikipedia.org/wiki/Function_as_a_service\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Functions as a service (FaaS)\"})}),\" has these key characteristics:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Only one entry point:\"}),\" This is an HTTP request or notification from another server, helping you to encapsulate your logic.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Limited memory:\"}),\" Assigning more memory means a higher cost, encouraging you to focus on keeping the function small.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Limited runtime:\"}),\" Each function has a maximum time it will be allowed to run for, which also helps you keep the function small.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"State isn\u2019t shared between functions:\"}),\" State can be stored in other services only, which makes each function independently deployable.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Making your services small, encapsulated, and independently deployable are key features of \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/understanding-microservices\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"effective microservice design\"})}),\", allowing you to keep adding new features in a maintainable way.\"]}),/*#__PURE__*/e(\"h3\",{children:\"4. With Serverless, Your Services Are More Reliable.\"}),/*#__PURE__*/e(\"p\",{children:\"Serverless can help you avoid some of the most common issues with servers, such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A full file system.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The server restarting.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A corrupt file system.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Incorrectly configured operating system or software.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A bug in the software that causes the server to hang.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"When a platform handles all the server management, these issues no longer exist. However, your code is still running on servers provided by the cloud provider, and outages still happen. A famous example of this is the \",/*#__PURE__*/e(o,{href:\"https://eu.usatoday.com/story/tech/news/2017/02/28/amazons-cloud-service-goes-down-sites-scramble/98530914/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"four-hour outage of AWS S3 in 2017\"})}),\". Thankfully, these events are rare, and they happen far less often than they would if you were to manage your servers. Most cloud providers use advanced techniques and have specialist teams looking just at maintaining reliability. You can\u2019t sustain this dedicated effort through in-house IT teams without significant effort and cost.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Are the Most Important Trade-Offs of Using Serverless?\"}),/*#__PURE__*/e(\"p\",{children:\"What trade-offs should you expect to see when using serverless over traditional VMs or servers? Let\u2019s go through them one by one. Consider any limits before committing too heavily to a major restructure.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. It\u2019s More Difficult to Monitor and Debug\"}),/*#__PURE__*/t(\"p\",{children:[\"One of the main complaints I hear after converting a monolith architecture to serverless is the increased difficulty of monitoring and debugging. The most noticeable side effect of the conversion is an increase in the number of interconnected services. These services are all either communicating with one another or with the user. Monitoring output from a monolith is easy to read because the context of the application is all in one place. \",/*#__PURE__*/e(\"strong\",{children:\"Tracing issues between many small services is much harder.\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Some excellent resources on \",/*#__PURE__*/e(o,{href:\"https://rigor.com/blog/how-to-monitor-your-microservices\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"how to monitor your microservices\"})}),\" are available, but it\u2019s important when creating your services to take monitoring into account. Consider new log events carefully before adding them to the code. Too many logs make it difficult to track down an issue. Too few logs make it difficult to see the context of a problem. There are some effective tools out there to help with monitoring, such as \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/ci-cd-tools/bi-monitoring-logging-tools/datadog\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Datadog\"})}),\" and \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/ci-cd-tools/bi-monitoring-logging-tools/splunk\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Splunk\"})}),\". These tools help funnel logs from all your different services into one place. They also allow some prefiltering and let you link services, so you can understand why something failed.\"]}),/*#__PURE__*/e(\"h3\",{children:\"2. It\u2019s Harder to Coordinate Deployment\"}),/*#__PURE__*/t(\"p\",{children:[\"Difficulties in coordinating deployment also come from having more services with serverless architecture than with a monolith. You may not need to manage the underlying servers with serverless, but you do have to manage how you \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/resources/videos/deployment-pipeline\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"deploy the code\"})}),\" and how you manage the communication between services. Unless your system is trivially simple, managing deployment of many services manually is difficult.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you get to the point where you need better visibility and control of deployment, then using a service may help. \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plutora\"})}),\" is a \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform/value-stream-management\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"value stream management\"})}),\" service that helps you build, test, and deploy your new features. Then it monitors the deploy to make sure the new service is working as expected.\"]}),/*#__PURE__*/e(\"p\",{children:\"From my experience, the businesses that have the biggest problems with deployment are those that have too many reliant services. Keep this in mind during the initial design phase, and you\u2019ll avoid lots of headaches later!\"}),/*#__PURE__*/e(\"h3\",{children:\"3. It\u2019s Harder to Run the Full Architecture Locally\"}),/*#__PURE__*/e(\"p\",{children:\"A common complaint from developers when moving to serverless is that it\u2019s difficult to recreate the full architecture locally. Make a special effort to seek a solution that works for the whole team. You and your developers both want as little friction as possible when creating new features. I\u2019ve seen many ways to approach this issue, and different solutions work for different teams. Here are the solutions I\u2019ve had the most success with.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"A framework to recreate the architecture locally:\"}),\" \",/*#__PURE__*/e(o,{href:\"https://docs.aws.amazon.com/lambda/latest/dg/serverless_app.html\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"AWS Serverless Application Model (SAM)\"})}),\" and \",/*#__PURE__*/e(o,{href:\"https://serverless.com/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"serverless framework\"})}),\" are two options to run the entire architecture locally.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"A cloud development environment for each developer:\"}),\" This approach allows each developer to create an identical environment to production in its own sandbox.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Using container technology:\"}),\" This approach uses containers that replicate each service and run the entire architecture locally.\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"The best solution for your team may be one of the above or a mixture. The only way to find the most productive way of working is for the team of developers to try each one.\"}),/*#__PURE__*/e(\"h3\",{children:\"4. Cold Starts Can Have a Huge Impact on Speed of Processing\"}),/*#__PURE__*/e(\"p\",{children:\"One of the major limitations of functions as a service (one category of serverless platforms) is the concept of cold starts. They can affect the speed with which you can respond to a user\u2019s request.\"}),/*#__PURE__*/e(\"p\",{children:\"A cold start happens when your function takes much longer than usual to respond because it\u2019s no longer running on a VM. Your cloud provider will increase or decrease the number of VMs running your function automatically depending on the number of requests. However, if no one is using your service, then you have no requests coming in\u2014and your cloud provider will stop all the servers.\"}),/*#__PURE__*/e(\"p\",{children:\"When your service receives a steady stream of requests, your cloud provider will have one or more VMs running a version of your function. Responses from these already running functions are quick because the VM doesn\u2019t have to start before processing.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are \",/*#__PURE__*/e(o,{href:\"https://medium.com/thundra/dealing-with-cold-starts-in-aws-lambda-a5e3aa8f532\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"ways to avoid cold starts\"})}),\". However, nothing is foolproof. Most of the workarounds rely on how the cloud providers scale\u2014and that\u2019s out of your control. The best solution is to choose services with a steady load or those where the response time of the service isn\u2019t crucial to the business.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Serverless Architecture Is Becoming More Mainstream\"}),/*#__PURE__*/t(\"p\",{children:[\"There\u2019s no denying that serverless is becoming a more mainstream way of architecting your system. It\u2019s easy to get caught up in the hype and listen only to the amazing benefits. But if you do that, you\u2019ll find out about limitations only after implementation. \",/*#__PURE__*/e(\"strong\",{children:\"Consider each service in isolation, create proof of concepts, and test with some real data. \"}),\"I can\u2019t give you a solution that will work for all use cases. However, I hope I\u2019ve helped you spot some opportunities for improving some of your services and informed you about pitfalls of working in this new paradigm.\"]})]});export const richText11=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"The use of the cloud is inevitable for most companies because cloud computing is necessary for a company that wants to keep up to date with the industry and remain competitive. According to the \",/*#__PURE__*/e(o,{href:\"https://media.flexera.com/documents/rightscale-2019-state-of-the-cloud-report-from-flexera.pdf?elqTrackId=372b6798c7294392833def6ec8f62c5c&elqaid=4588&elqat=2&_ga=2.122739723.1295462418.1553885771-1511922859.1553885771\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"RightScale 2019 State of the Cloud Report by Flexera\u2122\"})}),\", 94% of the 786 technical professionals from across a broad cross-section of organizations surveyed use some form of cloud strategy. And the cloud they use can be public, private, or hybrid.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The latest State of the Cloud Report also tells us that \",/*#__PURE__*/e(\"strong\",{children:\"84% of the respondents use a multi-cloud strategy, leveraging nearly five clouds on average. \"}),\"And enterprises that use a hybrid strategy make up 58% of the respondents, up from 51% in 2018.\"]}),/*#__PURE__*/e(\"p\",{children:\"This post provides a definition of a hybrid cloud and easy-to-follow use cases. After that, we\u2019ll dive deeper into the benefits, disadvantages, best practices, and pitfalls of utilizing a hybrid cloud.\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText12=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"Public, Private, and Hybrid Clouds\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s important to know the difference between public, private, and hybrid clouds.\"}),/*#__PURE__*/e(\"img\",{alt:\"hybrid cloud\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,CqLhyOHa8hxr5tHdkqjEeOBJzY.png?originalFilename=hybrid_cloud_diagram.png\",src:\"https://framerusercontent.com/images/CqLhyOHa8hxr5tHdkqjEeOBJzY.png\",srcSet:\"https://framerusercontent.com/images/CqLhyOHa8hxr5tHdkqjEeOBJzY.png?scale-down-to=512 512w,https://framerusercontent.com/images/CqLhyOHa8hxr5tHdkqjEeOBJzY.png 804w\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Private Cloud\"}),\": A private cloud serves the needs of a single organization. It\u2019s often hosted on-prem and is optimized to fit a particular infrastructure use case.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Public Cloud\"}),\": Generally speaking, a public cloud is hosted by a cloud provider such as \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/ci-cd-tools/iaas-tools-cloud-tools/amazon-web-services\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Amazon Web Services (AWS)\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/ci-cd-tools/iaas-tools-cloud-tools/azure\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Microsoft Azure\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/ci-cd-tools/iaas-tools-cloud-tools/google-cloud-platform\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Google Cloud Platform\"})}),\", or IBM Cloud. It provides on-demand cloud services for which you pay per usage. The benefit of a public cloud is that it\u2019s accessible over the internet.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hybrid Cloud\"}),\": A hybrid cloud spans at least one private and one public cloud. More information about this type follows.\"]}),/*#__PURE__*/e(\"h2\",{children:\"What Is a Hybrid Cloud?\"}),/*#__PURE__*/t(\"p\",{children:[\"A hybrid cloud is a computing environment that combines one or more public cloud providers with a private cloud by allowing data and applications to be shared between them. Whenever the demand for storage and compute resources exceeds the capacities of the on-prem private cloud, \",/*#__PURE__*/e(\"strong\",{children:\"hybrid cloud computing gives businesses the ability to seamlessly scale up their on-prem infrastructure to the public cloud\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\"to handle any overflow.\"})]}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s important to keep in mind that third-party data centers won\u2019t get access to all of a company\u2019s data through this partnership. This is one of the reasons why the hybrid cloud has gained popularity in recent years. Most companies prefer to have their valuable data stored on-prem and to host their own applications. However, sometimes their current storage capacity just doesn\u2019t meet the demand. In such cases, a company used to have to throw everything into a public cloud infrastructure, which posed a possible security risk.\"}),/*#__PURE__*/t(\"p\",{children:[\"In response to this issue,\",/*#__PURE__*/e(\"strong\",{children:\" the hybrid cloud was developed to combine the security of the private cloud with the fast connection speeds and easy-to-access features of the public cloud.\"})]}),/*#__PURE__*/e(\"h2\",{children:\"Hybrid Cloud Use Cases\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"Hybrid Cloud for Startups\"}),/*#__PURE__*/t(\"p\",{children:[\"For a vibrant startup that offers any kind of online service, using a hybrid cloud might be the ideal solution. A startup often has no idea to what degree an application will succeed in the market and what storage capacity they\u2019ll need. \",/*#__PURE__*/e(\"strong\",{children:\"Instead of making serious investments for on-site hardware, a startup can choose to keep things simple by extending its on-site hardware with a public cloud.\"})]}),/*#__PURE__*/t(\"p\",{children:[\"\u201CThe risk of the new venture is far easier to justify if the capital investment is minimized and, if you hit the jackpot, the fees to the cloud service provider may seem like chicken feed compared to the new revenue being generated,\u201D wrote Bob Tarzey, \",/*#__PURE__*/e(\"em\",{children:\"TechRepublic\"}),\" contributor.\"]}),/*#__PURE__*/e(\"p\",{children:\"Startups can benefit from this approach, as they can decide to add more on-site resources once they\u2019ve established themselves and gained more insights into the metrics of their offered solutions.\"}),/*#__PURE__*/e(\"h3\",{children:\"Managing Peak Traffic\"}),/*#__PURE__*/e(\"p\",{children:\"For many websites and tools, traffic levels peak. As an example, let\u2019s explore a flight comparison tool. Commonly, this website sees peak loads before a holiday. To avoid making major investments into on-site hardware, it makes sense to extend capabilities by using a public cloud to manage traffic levels. Besides that, a flight comparison tool doesn\u2019t handle any private user data. Therefore, capabilities can run perfectly inside the public cloud.\"}),/*#__PURE__*/e(\"h3\",{children:\"Supporting Legacy Technology\"}),/*#__PURE__*/t(\"p\",{children:[\"Many enterprises are stuck with legacy applications, which are hard and especially costly to port to a more up-to-date version. In most cases, these applications aren\u2019t fit for running inside a hybrid cloud. So instead, \",/*#__PURE__*/e(\"strong\",{children:\"many companies utilize hybrid cloud models to cover these legacy application gaps. \"}),\"This type of deployment will soon become more common in the large enterprise market as businesses try to salvage their legacy applications without doing a full migration.\"]}),/*#__PURE__*/e(\"h2\",{children:\"3 Benefits of Using the Hybrid Cloud Model\"}),/*#__PURE__*/e(\"h3\",{children:\"1. No Expensive Hardware Investments\"}),/*#__PURE__*/t(\"p\",{children:[\"The number one reason for using the hybrid cloud model is to \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/test-environment-cost\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"cut costs\"})}),\" and remove the need for any massive capital expenditures to handle spikes in demand. For many organizations\u2014especially startups\u2014it\u2019s hard to estimate the metrics of their online service. Therefore, it makes sense to have a small on-prem installation extended by the public cloud.\"]}),/*#__PURE__*/e(\"p\",{children:\"Why not move completely to the cloud? Using private hardware allows organizations to handle private data more securely behind a firewall within their own network. Meanwhile, the public cloud helps them handle peak demand and allows for outsourcing nonsensitive tasks.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Cost-Effective Model\"}),/*#__PURE__*/e(\"p\",{children:\"As I\u2019ve said, the hybrid cloud allows companies to minimize their investment in expensive on-site hardware. Ideally, limited on-site hardware is extended by a public cloud in order to manage peak traffic.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Disaster Recovery and Business Continuity\"}),/*#__PURE__*/e(\"p\",{children:\"Setting up an independent environment for disaster recovery (DR) or business continuity purposes can be very costly. Using a hybrid cloud setup where the on-prem data center fails over to a public cloud service in case of an emergency is much more affordable. These costs are the number one reason why companies opt for a hybrid cloud as their disaster recovery option. It gives them the ability to expand very rapidly, and it enables companies to operate in a low-cost environment.\"}),/*#__PURE__*/t(\"p\",{children:[\"Besides disaster recovery, \",/*#__PURE__*/e(\"strong\",{children:\"a hybrid cloud can also act as an archive for storing snapshots\"}),\" that might be useful in case something goes wrong with the application.\"]}),/*#__PURE__*/e(\"h2\",{children:\"3 Disadvantages of the Hybrid Cloud Model\"}),/*#__PURE__*/e(\"p\",{children:\"A hybrid cloud model hosts a whole bunch of interesting advantages, but let\u2019s also look at the other side. Here are a few disadvantages that organizations may face when deploying a hybrid cloud.\"}),/*#__PURE__*/e(\"h3\",{children:\"1. Deployment Costs\"}),/*#__PURE__*/e(\"p\",{children:\"A company might save a lot of money long-term by deploying a hybrid cloud model. However, they often forget about the initial deployment costs of a public cloud and their on-prem cloud.\"}),/*#__PURE__*/e(\"h3\",{children:\"2. Ensure Maximum Security of Data\"}),/*#__PURE__*/e(\"p\",{children:\"Organizations have to figure out where to store their data. Some prefer to store sensitive data on-site. This means they have less flexibility when trying to access the data or use it for applications. On the other hand, when storing sensitive data in the public cloud, organizations must be extra careful about how they protect it.\"}),/*#__PURE__*/e(\"h3\",{children:\"3. Cloud Compatibility\"}),/*#__PURE__*/t(\"p\",{children:[\"Companies must be careful when constructing a hybrid cloud setup. \",/*#__PURE__*/e(\"strong\",{children:\"When chosen incorrectly, cloud compatibility can become a costly issue. \"}),\"For example, a fast-performing on-site setup might not be a great fit with a slower public infrastructure. This can result in a mediocre performance for your online service, which isn\u2019t ideal.\"]}),/*#__PURE__*/e(\"p\",{children:\"Also, different cloud providers maintain slightly different patch releases or operating systems. When you use compiled languages, it\u2019s possible that CPU architecture differences will occur.\\xa0This last point isn\u2019t a big issue, however, as many tools have been developed to easily manage version dependencies.\"}),/*#__PURE__*/e(\"h2\",{children:\"7 Best Practices for a Hybrid Cloud\"}),/*#__PURE__*/e(\"h3\",{children:\"Understand Your Data\"}),/*#__PURE__*/e(\"p\",{children:\"When you decide to start working on your hybrid cloud environment, make sure you understand your data. This means you know what data flows through the different applications you intend to host.\\xa0Also be sure to make a distinction between high-security data and low-security data. This forms the basis for deciding the setup of your environment.\"}),/*#__PURE__*/e(\"h3\",{children:\"Select a Standardized Solution\"}),/*#__PURE__*/e(\"p\",{children:\"Keep things simple! Try to find a standardized solution that\u2019s easy to deploy and preferably open source. You don\u2019t want to get stuck with more expensive proprietary software.\"}),/*#__PURE__*/e(\"h3\",{children:\"Create Internal Guidelines\"}),/*#__PURE__*/t(\"p\",{children:[\"Many organizations don\u2019t have a properly defined policy or guideline that tells them which applications can run in the public cloud and what data can be used there. \",/*#__PURE__*/e(\"strong\",{children:\"Clearly define what data can be accessed and limit the applications that can run in the public cloud. \"}),\"These guidelines form the basis of your privacy policy, which states how you\u2019ll use the users\u2019 data.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Implement a Hybrid Cloud in Stages\"}),/*#__PURE__*/e(\"p\",{children:\"If you aren\u2019t sure how to implement a hybrid cloud all at once, try implementing it in phases. Doing so will help your organization keep on top of the change, and it will require fewer resources because you can gradually convert to the new setup.\"}),/*#__PURE__*/e(\"p\",{children:\"A good approach is to start by building the on-prem private cloud to get that first experience of setting up a secure cloud. Once that\u2019s done, your organization can deploy its first application on its private cloud. After that, you can start working on integrating a public cloud provider.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"The ultimate test for your hybrid cloud setup lies within stress testing\"}),\" to see if the private cloud flows over into the public cloud whenever the traffic peaks.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Spend Time on the Configuration\"}),/*#__PURE__*/t(\"p\",{children:[\"In order to optimize your cost savings, try to dive into the configuration of your hybrid cloud solution. \",/*#__PURE__*/e(\"strong\",{children:\"One of the key properties to look for is \u201Cburst control.\u201D \"}),\"The burst control property defines when the load for your on-prem hardware becomes too much and should scale to the public cloud. Of course, more advanced scenarios are possible where you always run nonsensitive operations in the public cloud, and your on-site hardware serves as a dedicated environment for running sensitive tasks.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Monitor Your Public Cloud\"}),/*#__PURE__*/e(\"p\",{children:\"There\u2019s always a chance that something will go wrong with your hybrid cloud setup. Therefore, I suggest putting monitoring tools in place to provide insights on not only the uptime of your applications but also their usage. Such tools can reveal the improper configuration of your cloud setup.\"}),/*#__PURE__*/e(\"h3\",{children:\"Combine Multiple Public Cloud Providers\"}),/*#__PURE__*/e(\"p\",{children:\"Instead of relying fully on one public cloud provider, I suggest combining multiple providers. This makes your company less dependent on a specific cloud provider. On the other hand, this approach is more complex to construct, as you have to support several providers.\"}),/*#__PURE__*/e(\"h2\",{children:\"Pitfalls for a Hybrid Cloud Environment\"}),/*#__PURE__*/e(\"h3\",{children:\"Uneducated Decision Makers\"}),/*#__PURE__*/t(\"p\",{children:[\"Hybrid cloud is a newer strategy that can save companies time and effort when used correctly. However, companies will often follow the latest \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/the-time-is-now-for-a-holistic-approach-to-it-delivery-assurance\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"trends\"})}),\" in IT simply because they believe a newer strategy will benefit their organization. This is a huge mistake.\",/*#__PURE__*/e(\"strong\",{children:\" To make the most of a hybrid cloud strategy, educate your C-level executives \"}),\"so they understand how the hybrid cloud works and can make the right decision for your company.\"]}),/*#__PURE__*/e(\"h3\",{children:\"How Will You Use a Hybrid Cloud?\"}),/*#__PURE__*/e(\"p\",{children:\"Many companies don\u2019t realize that public cloud providers charge for the bandwidth you use. So when you are deploying data-intensive applications onto a public cloud, this can become very costly. To avoid making such an expensive mistake, try to understand how you\u2019ll be using your hybrid cloud setup.\"}),/*#__PURE__*/e(\"p\",{children:\"Here are some examples that make sense:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A single cloud with storage and applications\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Applications in the cloud with storage on site\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Applications in the cloud while caching data in the public cloud but keeping storage on site\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"All three of these examples will reduce bandwidth usage.\",/*#__PURE__*/e(\"strong\",{children:\" The main goal is to run CPU intensive processes in the cloud. \"}),\"That\u2019s where organizations can really reduce their costs.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Getting Stuck in a Public vs. Private Debate\"}),/*#__PURE__*/e(\"p\",{children:\"Oftentimes organizations are unsure about which data to store in which service. Giving up control over a portion of the data your organization has historically controlled can be hard. Try to avoid political debates over the matter by using a framework to decide where to store data.\"}),/*#__PURE__*/e(\"h2\",{children:\"The Bottom Line\"}),/*#__PURE__*/e(\"p\",{children:\"A hybrid cloud is an interesting approach for companies that provide services that don\u2019t require a lot of data to be passed around. The hybrid cloud is ideal for executing nonsensitive CPU intensive operations in the public cloud, while more data-sensitive operations are executed behind a firewall within the private cloud.\"}),/*#__PURE__*/t(\"p\",{children:[\"A hybrid cloud might seem like a good fit for many companies. Before you decide, make sure you understand the data you\u2019re dealing with and don\u2019t underestimate the required setup. A lot of things can go wrong when you\u2019re trying to implement your hybrid cloud environment. However, with proper analysis of your IT environment, the risks can be greatly reduced. Meet \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/platform\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"Plutora\"})}),\", a software delivery management solution that helps you manage the switch to a hybrid cloud.\"]})]});export const richText13=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Digital transformation is all the rage these days, and for good reason. From saving costs and \",/*#__PURE__*/e(\"strong\",{children:\"increased productivity to happier customers and higher profitability\"}),\", \",/*#__PURE__*/e(o,{href:\"https://www.enterprise-cio.com/news/2017/jun/26/10-benefits-of-digital-transformation/\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"digital transformation delivers a number of benefits\"})}),\" to organizations of all sizes and in all industries.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Digital Transformation Strategy\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,6y7fmBPhRSMRqZ8x2FyIgXQdz8.png?originalFilename=digital-transformation-strategy.png\",src:\"https://framerusercontent.com/images/6y7fmBPhRSMRqZ8x2FyIgXQdz8.png\",srcSet:\"https://framerusercontent.com/images/6y7fmBPhRSMRqZ8x2FyIgXQdz8.png?scale-down-to=512 512w,https://framerusercontent.com/images/6y7fmBPhRSMRqZ8x2FyIgXQdz8.png 777w\"}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s one thing to understand the importance of digital transformation. It\u2019s quite another to successfully enact a digital transformation initiative at your company.\"}),/*#__PURE__*/t(\"p\",{children:[\"Follow these \",/*#__PURE__*/e(\"strong\",{children:\"six steps to increase the chances of your digital transformation strategy being implemented \"}),\"without any hitches.\"]}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText14=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h2\",{children:\"1. Form a Steering Committee\"}),/*#__PURE__*/t(\"p\",{children:[\"If you think you\u2019re going to have an easy time getting a group of employees to change their workflows just because \",/*#__PURE__*/e(\"em\",{children:\"you \"}),\"said so, you\u2019re in for a surprise.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"When many employees get comfortable at work, they become stuck in their ways. Ask them to change the way they do things and you\u2019ll be greeted by grumbles. This maxim holds true for all kinds of employees, from marketers to HR to sales reps and everyone in between. As for engineers? Well, we can all guess where they fall on the spectrum.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"So first things first: \",/*#__PURE__*/e(\"strong\",{children:\"form a steering committee filled with a diverse set of employees from across the organization\"}),\". You\u2019ll likely want to include some senior-level executives or even members of the C-suite on this committee. That should be relatively easy to do because these individuals are most assuredly aware of the benefits of digital transformation.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"With one or two of them on board, it\u2019ll be much easier to convince the rest of your team to buy into the idea of becoming a wholly digital-first organization.\"}),/*#__PURE__*/e(\"h2\",{children:\"2. Identify Your Objectives\"}),/*#__PURE__*/e(\"p\",{children:\"You can\u2019t just decide to move forward with digital transformation and think you\u2019re going to experience transformative results. Instead, you need a robust digital transformation strategy that has a specific end goal in mind.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"To do that, you need to determine what you\u2019re trying to accomplish with your digital transformation initiative. This is why it\u2019s crucial to form a steering committee right off the bat. Two minds are better than one, and five or six are even better. Maybe some of your goals include cost savings, increased productivity, stronger security controls, enhanced employee morale, or stronger customer experiences. Maybe it\u2019s a combination of all of the above.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"Whatever the case may be, \",/*#__PURE__*/e(\"strong\",{children:\"it\u2019s much easier to achieve your objectives once you identify what they are\"}),\". Spend some time thinking about what you hope to accomplish and work backward from there. Consider establishing a few overarching objectives that are a must, as well as lower-priority objectives that would be nice to have.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Like anything else, \",/*#__PURE__*/e(\"strong\",{children:\"successfully implementing digital transformation at your organization will take some time.\"}),\" Don\u2019t expect to reinvent the wheel overnight because you simply won\u2019t be able to. Instead, set a realistic timeline. Where do you hope to end up at the end of the month, the end of the quarter, and the end of the year? Where do you hope to be five years from now?\"]}),/*#__PURE__*/e(\"p\",{children:\"Only you know the answers to these questions.\"}),/*#__PURE__*/e(\"h2\",{children:\"3. Select Key Technologies\"}),/*#__PURE__*/e(\"p\",{children:\"So you\u2019ve formed a steering committee and you\u2019ve figured out what you\u2019re trying to accomplish with your digital transformation strategy. Now, it\u2019s time to figure out which key technologies you\u2019ll use to get there.\"}),/*#__PURE__*/t(\"p\",{children:[\"If, for example, your company is still relying on paper-based processes, you may want to start there. Figure out \",/*#__PURE__*/e(\"strong\",{children:\"how to digitize those processes and you should be able to save money, reduce human error, increase productivity, and make your employees\u2019 lives easier\"}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"If you haven\u2019t done so already, an easy place to start your digital transformation is by moving to the cloud. Thanks to cloud technologies, your employees can get more done, accessing their mission-critical work documents and tools from any location.\"}),/*#__PURE__*/e(\"h2\",{children:\"4. Create New Business Processes\"}),/*#__PURE__*/e(\"p\",{children:\"Once you\u2019ve picked the technologies you\u2019re going to use, it\u2019s time to create new business processes that your employees can use as a guide to work more effectively.\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s say you\u2019re a marketing agency that\u2019s been creating content in Microsoft Word and sending it to clients via email. Once received, your clients would then edit the documents and send them back to you, suggesting changes and revisions that need to be made. Your team would then download those documents, make the revisions, and send them back. Repeat the process ad infinitum until the client was satisfied.\"}),/*#__PURE__*/e(\"p\",{children:\"Yes, Microsoft Word and email are both \u201Cdigital.\u201D But that doesn\u2019t make this the most efficient process. While digital transformation often entails digitizing paper processes, it can also entail making digital processes much more efficient. In this case, you can do that by moving your workflows to the cloud.\"}),/*#__PURE__*/e(\"p\",{children:\"For example, in such a scenario, a simple digital transformation strategy might look like this: Instead of using Microsoft Word, start working in Google Docs. That way, you are able to eliminate the back-and-forth emails and the process of downloading and uploading a zillion iterations of the same Word document (which creates problems on its own when it comes to version control).\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"By moving to Google Docs and giving editing permissions to appropriate clients, you can expedite the editing and approval process considerably\u2014even collaborating on the same document in real-time.\"}),/*#__PURE__*/e(\"p\",{children:\"Of course, chances are your company isn\u2019t a marketing agency. But the above example should get you thinking in the right direction.\\xa0\"}),/*#__PURE__*/e(\"h2\",{children:\"5. Train Your Team\"}),/*#__PURE__*/e(\"p\",{children:\"Across your organization, different employees possess different levels of technical know-how. While some team members might have no problem adapting to a new way of working, other employees might not have as easy a time adjusting.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you want your digital transformation strategy to work, \",/*#__PURE__*/e(\"strong\",{children:\"you need to set your team up for success.\"}),\" Part of that entails providing them with robust training that enables them to become familiar with the new way of working.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In addition to hands-on training exercises, you should also give your team access to a library of helpful resources and tutorials they can reference should they \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/digital-transformation-challenges\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"run into a problem\"})}),\" or have any questions.\\xa0\"]}),/*#__PURE__*/e(\"p\",{children:\"Remember, you can\u2019t force your team to switch gears overnight. After you\u2019ve trained them extensively, give them a few weeks\u2014or even a few months\u2014before requiring them to start using the new tools and following the new processes.\"}),/*#__PURE__*/e(\"h2\",{children:\"6. Ask for Feedback\"}),/*#__PURE__*/e(\"p\",{children:\"Even if your steering committee is filled with geniuses, you won\u2019t get it right the first time.\"}),/*#__PURE__*/t(\"p\",{children:[\"Embrace an \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/12-agile-principles\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"agile\"})}),\" mindset and get ready to iterate. \",/*#__PURE__*/e(\"strong\",{children:\"Ask your employees for feedback and put their best ideas into practice\"}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Chances are this feedback will help you improve your program. Your team works in the trenches, after all. They see things from a different angle than you do.\"}),/*#__PURE__*/e(\"p\",{children:\"At the very least, it\u2019s an easy way to encourage your employees to get on board with your digital transformation strategy. It\u2019ll show them that you care about their ideas and their well-being.\"}),/*#__PURE__*/e(\"h2\",{children:\"Are You Ready to Implement Your Digital Transformation Strategy?\"}),/*#__PURE__*/t(\"p\",{children:[\"Any company that wishes to survive over the long term needs to \",/*#__PURE__*/e(o,{href:\"https://www.plutora.com/blog/digital-transformation-technology-powerhouse\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"embrace digital transformation\"})}),\". It\u2019s really that simple.\"]}),/*#__PURE__*/e(\"p\",{children:\"The sooner your company does it, the faster you\u2019ll be able to move beyond your slower-moving peers.\"}),/*#__PURE__*/t(\"p\",{children:[\"To learn more about how your company can successfully implement a digital transformation strategy, \",/*#__PURE__*/e(o,{href:\"https://webinars.devops.com/engineering-your-digital-transformation\",openInNewTab:!1,smoothScroll:!1,children:/*#__PURE__*/e(\"a\",{children:\"check out this webinar\"})}),\" hosted by Gary Gruver, president of Gruver Consulting and author of \",/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:\"Engineering the Digital Transformation\"})}),\", and Jeff Keyes, director of product marketing at Plutora.\"]}),/*#__PURE__*/e(\"p\",{children:\"Simply put, moving digital transformation forward at your organization is your ticket to happier employees, happier customers, and a healthier bottom line. What\u2019s not to like?\"})]});export const richText15=/*#__PURE__*/t(i.Fragment,{children:[/*#__PURE__*/e(\"h6\",{children:\"Enhanced productivity with a skyrocketing revenue! Isn\u2019t it every business owner\u2019s dream?\"}),/*#__PURE__*/e(\"h6\",{children:\"Even though that\u2019s the goal of every firm, not all businesses are fortunate enough to achieve it. But if you know about a certain practice, you can take your firm to the next level.\"}),/*#__PURE__*/e(\"p\",{children:\"Yes\u2014there\u2019s a practice that will help you achieve higher profits, as well as increase employee satisfaction, enhance sustainability, and improve product quality. Sound too good to be true? Well, once you start incorporating the andon cord, along with lean operations, in your business processes, you\u2019ll be a believer. Success is going to be the reality of your firm for the long haul.\"}),/*#__PURE__*/e(\"p\",{children:\"In this post, I\u2019ll discuss that very practice. You\u2019ll learn about what the andon cord is and why you should care. I\u2019ll also talk about how lean engineering drove the creation of the andon cord, and I\u2019ll share the cultural change it brought about. As a result, you\u2019ll understand ideas that can change your company in a way that matters.\"}),/*#__PURE__*/e(\"img\",{alt:\"andon cord\",className:\"framer-image\",\"data-framer-asset\":\"data:framer/asset-reference,X5GRbzJQ3aEeW9AZobR0fqDmy4.png?originalFilename=andon_cord_understanding_customer_needs.png\",src:\"https://framerusercontent.com/images/X5GRbzJQ3aEeW9AZobR0fqDmy4.png\",srcSet:\"https://framerusercontent.com/images/X5GRbzJQ3aEeW9AZobR0fqDmy4.png?scale-down-to=512 512w,https://framerusercontent.com/images/X5GRbzJQ3aEeW9AZobR0fqDmy4.png 777w\"}),/*#__PURE__*/e(\"h2\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText14\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText13\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText12\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText9\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText15\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText11\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText10\":{\"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", "__FramerMetadata__"]
}
