プリンキピア

第9章ソフトウェア工学

LINK TO LEARNING学習へのリンク
Atlassian, a worldwide company that creates team and project related products, has a no-nonsense guide to Agile development that provides additional details on what Agile is as well as on related topics, such as Scrum, Kanban, Agile Project, the Agile Manifesto, and much more. Its site has a tutorial for Scrum as well as related articles (https://openstax.org/r/76ScrumTutorial) where you can learn more about how to use Scrum in a project.
英語のヒント
チームやプロジェクトに関する製品を開発する世界的企業Atlassianは、実用本位のアジャイル開発ガイドを提供している。アジャイルとは何かに加え、Scrum、Kanban、アジャイルプロジェクト、アジャイル宣言など、多くの関連する話題を詳しく説明している。同社のサイトにはScrumのチュートリアルと関連記事(https://openstax.org/r/76ScrumTutorial)があり、プロジェクトでScrumを使う方法をさらに学ぶことができる。
DevOps
DevOps
A DevOps model combines practices of software development and operations. It uses a short development life cycle and continuous delivery to achieve high-quality software products. In a DevOps model, development and operations teams are merged into a single team, and software engineers participate in all parts of the software life cycle. As shown in Figure 9.15, this life cycle includes planning (design), development, testing, deployment, and operations in a continuous cycle.
英語のヒント
DevOpsモデルは、ソフトウェアの開発と運用の実践方法を組み合わせる。短い開発ライフサイクルと継続的デリバリーによって、高品質なソフトウェア製品の実現を目指す。DevOpsモデルでは、開発チームと運用チームを一つに統合し、ソフトウェアエンジニアがソフトウェアライフサイクルのすべての部分に参加する。図9.15に示すように、このライフサイクルには計画(設計)、開発、テスト、配備、運用が含まれ、これらが継続的に循環する。
Figure 9.15

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 9.15 DevOps is an Agile software process model that combines the practices of software development and operations such that software engineers participate in all parts of the software life cycle. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図9.15 DevOpsは、ソフトウェア開発と運用の実践方法を組み合わせ、ソフトウェアエンジニアがソフトウェアライフサイクルのすべての部分に参加するようにする、アジャイル型のソフトウェアプロセスモデルである。(帰属:Rice University、OpenStax著作権、CC BY 4.0ライセンス。)
Because the DevOps model involves a focus on both development and operations, there is less chance of errors or vulnerabilities existing in a released software product. This uniting of development and operations can also lead to faster releases or shipments of products. Because of the collaboration, there tends to be improved effectiveness, faster delivery, and an optimizing of processes.
英語のヒント
DevOpsモデルは開発と運用の双方に重点を置くため、公開したソフトウェア製品にエラーや脆弱性が存在する可能性が低くなる。開発と運用のこの結び付きによって、製品の公開や出荷を早めることもできる。協力が行われることで、有効性の向上、より迅速な提供、プロセスの最適化につながる傾向がある。
Where the DevOps process model can struggle is with systems that are complex as well as with legacy systems. The DevOps model requires strong teamwork and collaboration or it will likely fail. Additionally, it requires that the team members have the right expertise to satisfy the expectations of the project, including the ability to do continuous integration and development.
英語のヒント
DevOpsプロセスモデルが苦戦しやすいのは、複雑なシステムやレガシーシステムを扱う場合である。DevOpsモデルには強いチームワークと協力が必要であり、それがなければ失敗する可能性が高い。さらに、チームのメンバーには、プロジェクトへの期待を満たす適切な専門知識が必要である。その中には、継続的インテグレーションと継続的開発を行う能力も含まれる。
LINK TO LEARNING学習へのリンク
Some of the best practices associated with the fascinating field of DevOps include continuous integration, continuous delivery, microservices, infrastructure as code, monitoring and logging, communication and collaboration, among others. Read this perspective on what DevOps is (https://openstax.org/r/76DevOps) and consider researching other opinions to find other perspectives to help fully understand the concept.
英語のヒント
DevOpsという興味深い分野の優れた実践方法には、継続的インテグレーション、継続的デリバリー、マイクロサービス、コードとしてのインフラストラクチャ、監視とログ記録、意思疎通と協力などがある。「DevOpsとは何か」(https://openstax.org/r/76DevOps)についてのこの見解を読み、ほかの意見も調べてみよう。別の視点を見つけることで、この概念を十分に理解する助けになる。
Site Reliability Engineering
サイト信頼性エンジニアリング
Site Reliability Engineering (SRE) is an approach that focuses on achieving appropriate levels of reliability when developing solutions. SRE was created to address the complexity of challenges created when software solutions get larger. It is important to make sure that software meets business needs while operating reliably. The ability to scale up must be balanced with the complexity of a solution while maintaining reliability within a system. In many ways, this is a similar goal to that of the DevOps.
英語のヒント
サイト信頼性エンジニアリング(SRE)は、仕組みを開発する際に適切な信頼性の水準を実現することに重点を置く手法である。SREは、ソフトウェアによる仕組みが大規模化するときに生じる課題の複雑さに対処するために生まれた。ソフトウェアが確実に動作しながら事業上のニーズを満たすようにすることが重要である。システム内の信頼性を維持しながら、規模を拡大できる能力と仕組みの複雑さとの釣り合いを取らなければならない。多くの面で、これはDevOpsの目標と似ている。
Three key parts of SRE are reliability, appropriateness, and sustainability. A system needs to be reliable to serve the needs of the client. The level of reliability needs to be appropriate. Specifically, some systems don’t need 100% reliability 100% of the time. For example, a feature such as cruise control only needs to be reliable when it is in use. Additionally, most cruise control features do not need to maintain an exact speed, but rather can have a difference of a few miles or kilometers when the car is going up or down hills and be okay. Regarding sustainability, a system has to be sustainable and maintainable by people.
英語のヒント
SREの重要な三つの要素は、信頼性、適切さ、持続可能性である。システムは顧客のニーズに応えるために信頼できるものである必要がある。信頼性の水準は適切でなければならない。具体的には、常時100%の信頼性を必要としないシステムもある。たとえばクルーズコントロールのような機能は、使用しているときだけ確実に動作すればよい。また、ほとんどのクルーズコントロール機能は、速度を厳密に一定に保つ必要はない。車が坂道を上ったり下ったりするとき、時速で数マイルまたは数キロメートルの差があっても差し支えない。持続可能性という点では、システムは人が維持し、保守できるものでなければならない。
As noted earlier, SRE is similar to DevOps in that both bring software engineering and software operations closer. However, DevOps tends to focus on the product solution, or the “what,” whereas SRE focuses more on “how,” (i.e., how the solution will get done in a reliable and sustainable manner). Both focus on providing opportunities for collaboration across an organization to deliver solutions that will be successful for the client. Table 9.1 indicates areas where SRE and DevOps differ.
英語のヒント
先に述べたように、SREはソフトウェア工学とソフトウェア運用を近づけるという点でDevOpsに似ている。しかし、DevOpsが製品としての解決策、すなわち「何を」に重点を置く傾向があるのに対して、SREは「どのように」、つまり仕組みをいかに信頼できる持続可能な形で実現するかに、より重点を置く。どちらも、顧客にとって成功となる仕組みを提供するために、組織全体で協力する機会を用意することを重視する。表9.1はSREとDevOpsの相違点を示している。
SRE
DevOps
Primary focus of reliability of a solution
仕組みの信頼性を中心に扱う。
Primary focus of effective development and delivery of a solution
仕組みの効果的な開発と提供を中心に扱う。
Focus on regulating IT with specific measurements such as following service level indicators (SLIs) and service level objectives (SLOs)
サービスレベル指標(SLI)やサービスレベル目標(SLO)に従うなど、具体的な測定値によってITを管理することを重視する。
Focus on continual integration (CI) and continual development (CD)
継続的インテグレーション(CI)と継続的開発(CD)を重視する。
Prioritizes user experience by ensuring services run reliably and meet SLOs
サービスが確実に稼働し、SLOを満たすようにすることで、利用者の体験を優先する。
Works to use broad ideas and does not specify how operations of services are run
広い考え方を適用し、サービスの運用を具体的にどう行うかまでは規定しない。
Intended to be a role more than a framework, although it can be performed by those outside of the specific role
枠組みというより役割として想定されているが、その特定の役割に就いていない人が実施することもできる。
Although it can be a role, it is intended to be a philosophy adopted across a team
役割になる場合もあるが、チーム全体で採用する考え方として想定されている。
Works to move quickly to reduce cost of failure
障害に伴う費用を減らすため、速やかに行動することを目指す。
Works to implement gradual change to reduce the chance of failure
失敗の可能性を減らすため、少しずつ変化を取り入れる。
Works to have specific expectations of what is acceptable regarding failure or issues with new releases
新しいリリースの障害や問題について、どこまでを許容するかという具体的な期待を定める。
Accepts failure as a learning opportunity and prioritizes rapid recovery and continual improvement.
失敗を学習の機会として受け入れ、迅速な復旧と継続的な改善を優先する。
Uses automation and monitoring tools to standardize processes and reduce manual effort
自動化や監視のツールを使い、工程を標準化して手作業を減らす。
Works to reduce organizational isolation by working closer together but does not necessarily go to the same level of using similar tools and techniques
密接に協力することで組織内の孤立を減らす。ただし、同じようなツールや技法を使うという水準まで踏み込むとは限らない。
Table 9.1 Comparison of SRE and DevOps
表9.1 SREとDevOpsの比較