{"id":9773,"date":"2018-01-16T09:04:21","date_gmt":"2018-01-16T14:04:21","guid":{"rendered":"https:\/\/www.lpi.org\/devops-tools-introduction-02-modern-software-development\/"},"modified":"2026-01-27T12:35:04","modified_gmt":"2026-01-27T17:35:04","slug":"devops-tools-introduction-02-modern-software-development-old","status":"publish","type":"post","link":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/","title":{"rendered":"DevOps Tools Introduction #02: Modern Software Development"},"content":{"rendered":"<p>The DevOps Tools Engineer exam starts with <a href=\"https:\/\/wiki.www.lpi.org\/wiki\/LPIC-OT_DevOps_Tools_Engineer_Objectives_V1#701.1_Modern_Software_Development_.28weight:_6.29\">objective 701.1<\/a>\u00a0which covers modern software development, including aspects of architecture and team organization. These are broad topics but, since LPI expects candidates to be experienced IT professionals, you will probably already have some background in this area. Therefore, we\u2019ll focus on those aspects which are explicitly mentioned in the exam objectives.<\/p>\n<p>The context of the exam is applications that follow modern approaches to software development. One of the most quoted sources related to this kind of applications is the <a href=\"https:\/\/12factor.net\/\">Twelve-Factor App<\/a>. This manifesto explains twelve best practices for designing software that runs in containers and clouds. These tips apply to any programming language and development ecosystem. After reading them, you should think about how to implement these best practices with your preferred language and platform. Try to reflect upon how your software handles the Twelve Factors.<\/p>\n<p>When getting more detailed in your learning, <a href=\"https:\/\/martinfowler.com\">Martin Fowler&#8217;s website<\/a>\u00a0is a great place to learn about software architecture. He and his co-authors offer articles on <a href=\"https:\/\/martinfowler.com\/bliki\/EnterpriseApplication.html\">application architectures<\/a>, <a href=\"https:\/\/martinfowler.com\/articles\/microservices.html\">SOA and microservices<\/a>, <a href=\"https:\/\/martinfowler.com\/bliki\/ImmutableServer.html\">immutable servers<\/a>\u00a0as well as <a href=\"https:\/\/martinfowler.com\/articles\/dont-start-monolith.html\">monoliths and coupling<\/a>.<\/p>\n<p>A topic of special interest in the world of services are application programming interfaces; APIs for short. The exam objectives explicitly mention REST APIs and JSON data. A great introduction to APIs\u00a0can be found on <a href=\"https:\/\/restful.io\/objects-at-rest-part-1-what-is-it-3e26f0978616\" target=\"_blank\" rel=\"noopener\">restful.io<\/a>. Likewise, <a href=\"http:\/\/jsonapi.org\/\">jsonapi.org<\/a>\u00a0illustrates how to represent data in JSON and links to documents explaining JSON in greater detail.<\/p>\n<p>The exam objectives also mention a number of security aspects of applications. A good learning source is the <a href=\"https:\/\/www.owasp.org\/\">Open Web Application Security Project<\/a>. They cover the terms mentioned in the objectives such as <a href=\"https:\/\/www.owasp.org\/index.php\/Cross-site_Scripting_(XSS)\">cross-site scripting<\/a>, <a href=\"https:\/\/www.owasp.org\/index.php\/SQL_Injection\">SQL injections<\/a>, <a href=\"https:\/\/www.owasp.org\/index.php\/Web_Service_Security_Cheat_Sheet\">web service security<\/a>, <a href=\"https:\/\/www.owasp.org\/index.php\/Authentication_Cheat_Sheet\">authentication<\/a>, <a href=\"https:\/\/www.owasp.org\/index.php\/Transport_Layer_Protection_Cheat_Sheet\">transport encryption<\/a>, <a href=\"https:\/\/www.owasp.org\/index.php\/Cross-Site_Request_Forgery_(CSRF)\">CORS and CSRF<\/a>, and <a href=\"https:\/\/www.owasp.org\/index.php\/Error_Handling,_Auditing_and_Logging\">error reports<\/a>. Make sure you get an overview of the materials offered by OWASP and take a good look at their collection of <a href=\"https:\/\/www.owasp.org\/index.php\/OWASP_Cheat_Sheet_Series\">cheat sheets<\/a>.<\/p>\n<p>Two other terms mentioned in the exam objectives are ACID properties and CAP theoremes. Although there are many explanations, a number of answers to the question of the relationship of these terms are given in a <a href=\"https:\/\/www.quora.com\/What-is-the-relation-between-SQL-NoSQL-the-CAP-theorem-and-ACID\">quora thread<\/a>. This discussion also covers properties of relational and NoSQL databases; a field that we will shortly meet again when talking about cloud services.<\/p>\n<p>Finally, topic 701.1 also expects you to understand agile software development and DevOps. The <a href=\"http:\/\/agilemanifesto.org\/\">Manifesto for Agile Software Development<\/a>\u00a0is the canonical source for a lot related techniques. Again, Martin Flower\u2019s website hosts articles on the <a href=\"https:\/\/martinfowler.com\/agile.html\">agile manifesto<\/a>\u00a0and <a href=\"https:\/\/martinfowler.com\/bliki\/DevOpsCulture.html\">DevOps culture<\/a>\u00a0as well as some hints on how to become <a href=\"https:\/\/martinfowler.com\/articles\/agileFluency.html\">fluent in agile<\/a>.<\/p>\n<p>Learning about architectures and development techniques involves a lot of reading and almost no coding. It is a dusty topic for sure. However, the contents of this topic build the base upon which all of the other topics of the exam can be placed. In their own way, each technology covered in the exam supports the architectures and collaboration models explained in this objective. Having this big picture in mind helps you to recognize the relationships between the tools and explains design decisions made by the creators of the tools covered in the exam. Therefore, bookmark the most useful texts you found when working through the links above. Review them at the end of your studies and see how the technologies you\u2019ve learned in the meantime fit in.<\/p>\n<p>To see some examples of practical applications of these principles, stay tuned for <a href=\"https:\/\/www.lpi.org\/blog\/2018\/01\/23\/devops-tools-introduction-03-cloud-components-and-platforms\">next week\u2019s posting<\/a>, when we\u2019ll talk about <a href=\"https:\/\/www.lpi.org\/blog\/2018\/01\/23\/devops-tools-introduction-03-cloud-components-and-platforms\">cloud components and platforms<\/a>.<\/p>\n<p><a href=\"https:\/\/www.lpi.org\/blog\/2018\/01\/09\/devops-tools-introduction-01-getting-getting-started-started\" target=\"_self\" rel=\"noopener\">Previous post<\/a> | <a href=\"https:\/\/www.lpi.org\/blog\/2018\/01\/23\/devops-tools-introduction-03-cloud-components-and-platforms\" target=\"_self\" rel=\"noopener\">Next post<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The DevOps Tools Engineer exam starts wi &#8230; <a href=\"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/\" class=\"button-link\">Read more<\/a><\/p>\n","protected":false},"author":66,"featured_media":9774,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[12],"country":[],"language":[465],"ppma_author":[540],"class_list":["post-9773","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar","language-ingles"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>DevOps Tools Introduction #02: Modern Software Development - Linux Professional Institute (LPI)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/\" \/>\n<meta property=\"og:locale\" content=\"zh_TW\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DevOps Tools Introduction #02: Modern Software Development\" \/>\n<meta property=\"og:description\" content=\"The DevOps Tools Engineer exam starts wi ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/\" \/>\n<meta property=\"og:site_name\" content=\"Linux Professional Institute (LPI)\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LPIConnect\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-16T14:04:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-27T17:35:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/05\/LPI-blog-v3-02.png\" \/>\n\t<meta property=\"og:image:width\" content=\"730\" \/>\n\t<meta property=\"og:image:height\" content=\"457\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fabian Thorns\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@lpiconnect\" \/>\n<meta name=\"twitter:site\" content=\"@lpiconnect\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabian Thorns\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9810\u4f30\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\u9418\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/\"},\"author\":{\"name\":\"Fabian Thorns\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#\\\/schema\\\/person\\\/87a340eca845e18d801667fd11e6937c\"},\"headline\":\"DevOps Tools Introduction #02: Modern Software Development\",\"datePublished\":\"2018-01-16T14:04:21+00:00\",\"dateModified\":\"2026-01-27T17:35:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/\"},\"wordCount\":592,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/LPI-blog-v3-02.png\",\"articleSection\":[\"Sin categorizar\"],\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/\",\"name\":\"DevOps Tools Introduction #02: Modern Software Development - Linux Professional Institute (LPI)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/LPI-blog-v3-02.png\",\"datePublished\":\"2018-01-16T14:04:21+00:00\",\"dateModified\":\"2026-01-27T17:35:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#breadcrumb\"},\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/LPI-blog-v3-02.png\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/05\\\/LPI-blog-v3-02.png\",\"width\":730,\"height\":457},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/blog\\\/2018\\\/01\\\/16\\\/devops-tools-introduction-02-modern-software-development-old\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps Tools Introduction #02: Modern Software Development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#website\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/\",\"name\":\"Linux Professional Institute (LPI)\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-TW\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#organization\",\"name\":\"Linux Professional Institute (LPI)\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/logo.png\",\"width\":496,\"height\":175,\"caption\":\"Linux Professional Institute (LPI)\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/LPIConnect\",\"https:\\\/\\\/x.com\\\/lpiconnect\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/35136\",\"https:\\\/\\\/www.instagram.com\\\/lpi_org\\\/\",\"https:\\\/\\\/fosstodon.org\\\/@LPI\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/zh-hant\\\/#\\\/schema\\\/person\\\/87a340eca845e18d801667fd11e6937c\",\"name\":\"Fabian Thorns\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/cropped-fabian-thorns-1920px-96x96.jpg583c90110e404d4e42f0be7307753074\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/cropped-fabian-thorns-1920px-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/cropped-fabian-thorns-1920px-96x96.jpg\",\"caption\":\"Fabian Thorns\"},\"description\":\"Fabian Thorns is the Director of Product Development at Linux Professional Institute, LPI. He is M.Sc. Business Information Systems, a regular speaker at open source events and the author of numerous articles and books. Fabian has been part of the exam development team since 2010. Connect with him on LinkedIn, XING\u00a0or via email (fthorns\u00a0at\u00a0www.lpi.org).\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"DevOps Tools Introduction #02: Modern Software Development - Linux Professional Institute (LPI)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/","og_locale":"zh_TW","og_type":"article","og_title":"DevOps Tools Introduction #02: Modern Software Development","og_description":"The DevOps Tools Engineer exam starts wi ... Read more","og_url":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/","og_site_name":"Linux Professional Institute (LPI)","article_publisher":"https:\/\/www.facebook.com\/LPIConnect","article_published_time":"2018-01-16T14:04:21+00:00","article_modified_time":"2026-01-27T17:35:04+00:00","og_image":[{"width":730,"height":457,"url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/05\/LPI-blog-v3-02.png","type":"image\/png"}],"author":"Fabian Thorns","twitter_card":"summary_large_image","twitter_creator":"@lpiconnect","twitter_site":"@lpiconnect","twitter_misc":{"\u4f5c\u8005:":"Fabian Thorns","\u9810\u4f30\u95b1\u8b80\u6642\u9593":"3 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#article","isPartOf":{"@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/"},"author":{"name":"Fabian Thorns","@id":"https:\/\/www.lpi.org\/zh-hant\/#\/schema\/person\/87a340eca845e18d801667fd11e6937c"},"headline":"DevOps Tools Introduction #02: Modern Software Development","datePublished":"2018-01-16T14:04:21+00:00","dateModified":"2026-01-27T17:35:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/"},"wordCount":592,"commentCount":0,"publisher":{"@id":"https:\/\/www.lpi.org\/zh-hant\/#organization"},"image":{"@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/05\/LPI-blog-v3-02.png","articleSection":["Sin categorizar"],"inLanguage":"zh-TW","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/","url":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/","name":"DevOps Tools Introduction #02: Modern Software Development - Linux Professional Institute (LPI)","isPartOf":{"@id":"https:\/\/www.lpi.org\/zh-hant\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#primaryimage"},"image":{"@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/05\/LPI-blog-v3-02.png","datePublished":"2018-01-16T14:04:21+00:00","dateModified":"2026-01-27T17:35:04+00:00","breadcrumb":{"@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#breadcrumb"},"inLanguage":"zh-TW","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/"]}]},{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#primaryimage","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/05\/LPI-blog-v3-02.png","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/05\/LPI-blog-v3-02.png","width":730,"height":457},{"@type":"BreadcrumbList","@id":"https:\/\/www.lpi.org\/zh-hant\/blog\/2018\/01\/16\/devops-tools-introduction-02-modern-software-development-old\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lpi.org\/zh-hant\/"},{"@type":"ListItem","position":2,"name":"DevOps Tools Introduction #02: Modern Software Development"}]},{"@type":"WebSite","@id":"https:\/\/www.lpi.org\/zh-hant\/#website","url":"https:\/\/www.lpi.org\/zh-hant\/","name":"Linux Professional Institute (LPI)","description":"","publisher":{"@id":"https:\/\/www.lpi.org\/zh-hant\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lpi.org\/zh-hant\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-TW"},{"@type":"Organization","@id":"https:\/\/www.lpi.org\/zh-hant\/#organization","name":"Linux Professional Institute (LPI)","url":"https:\/\/www.lpi.org\/zh-hant\/","logo":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/www.lpi.org\/zh-hant\/#\/schema\/logo\/image\/","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/04\/logo.png","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/04\/logo.png","width":496,"height":175,"caption":"Linux Professional Institute (LPI)"},"image":{"@id":"https:\/\/www.lpi.org\/zh-hant\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LPIConnect","https:\/\/x.com\/lpiconnect","https:\/\/www.linkedin.com\/company\/35136","https:\/\/www.instagram.com\/lpi_org\/","https:\/\/fosstodon.org\/@LPI"]},{"@type":"Person","@id":"https:\/\/www.lpi.org\/zh-hant\/#\/schema\/person\/87a340eca845e18d801667fd11e6937c","name":"Fabian Thorns","image":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg583c90110e404d4e42f0be7307753074","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg","caption":"Fabian Thorns"},"description":"Fabian Thorns is the Director of Product Development at Linux Professional Institute, LPI. He is M.Sc. Business Information Systems, a regular speaker at open source events and the author of numerous articles and books. Fabian has been part of the exam development team since 2010. Connect with him on LinkedIn, XING\u00a0or via email (fthorns\u00a0at\u00a0www.lpi.org)."}]}},"views":1472,"authors":[{"term_id":540,"user_id":66,"is_guest":0,"slug":"fthornslpi-org","display_name":"Fabian Thorns","avatar_url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2026\/01\/cropped-fabian-thorns-1920px-96x96.jpg","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/posts\/9773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/comments?post=9773"}],"version-history":[{"count":3,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/posts\/9773\/revisions"}],"predecessor-version":[{"id":34002,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/posts\/9773\/revisions\/34002"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/media\/9774"}],"wp:attachment":[{"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/media?parent=9773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/categories?post=9773"},{"taxonomy":"country","embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/country?post=9773"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/language?post=9773"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.lpi.org\/zh-hant\/wp-json\/wp\/v2\/ppma_author?post=9773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}