{"id":9915,"date":"2020-08-05T07:50:38","date_gmt":"2020-08-05T12:50:38","guid":{"rendered":"https:\/\/sterling.com\/?p=9915"},"modified":"2020-08-05T07:50:38","modified_gmt":"2020-08-05T12:50:38","slug":"continuous-integration-and-continuous-delivery","status":"publish","type":"post","link":"https:\/\/sterling.com\/stargazer\/?p=9915","title":{"rendered":"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0"},"content":{"rendered":"<p>written by Nathan Bennet<\/p>\n<p><span data-contrast=\"auto\">Code updates can be very frustrating. Having spent time on the operations side of a code deploy, it is always difficult for an engineer to perform updates without the developer handy. Then, the question of who performs the code updates arises. The operations team would protest that the developers needed to do the code updates because operations did not understand the code. The developers would always respond with &#8220;You&#8217;re right, so give us access!&#8221; or worse, &#8220;We control the code, you get it where it needs to go and maintain it.&#8221; Both answers present challenges, and the operations team gets it in the end, &#8220;Well if nothing else, give it to the ops guys, they&#8217;ll handle it.&#8221;\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">DevOps is a melding of development and operations. These two groups were warring factions in the IT community, fighting over who did what, and who had access to what. One process that came from DevOps is known as CI\/CD. The &#8220;C&#8221; in CI\/CD stands for Continuous<\/span><span data-contrast=\"auto\">.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">It starts with the \u201cCI\u201d meaning \u201cContinuous Integration.\u201d This is a development practice where developers are continually pushing changes to code to their Version Control System (VCS). The VCS is sometimes referred to as the \u201cSingle Source of Truth,\u201d which refers to the main codebase by which all other code will be judged against. This development process allows users to \u201cpush\u201d their changes to the same VCS without stepping on each other\u2019s toes. DevOps uses an added tool, or a built-in feature, that controls the &#8220;build&#8221; and &#8220;push&#8221; of the code to the production boxes. This is the \u201cCD\u201d part of the process referred to as, \u201cContinuous Delivery.\u201d Code delivery is applied to legacy applications, where the code for the solution goes through a gated process followed by the interruption. \u201cCD\u201d can also stand for \u201cCode Deployment\u201d that does not require a gated process to push the code. Instead, a commit to the codebase equals a commit to production. This part of CI\/CD can build a virtual \u201cTest\u201d of the code base, compile it, verify its good, and send it to all production servers. This CI\/CD process (Figure 1.0) must supply a solution to the challenges discussed in the first paragraph. Let us revisit these challenges.\u00a0 <\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\n<h6><span data-contrast=\"auto\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-9916\" src=\"https:\/\/sterling.com\/stargazer\/wp-content\/uploads\/2020\/07\/figure-1-2-300x96.png\" alt=\"\" width=\"531\" height=\"170\" \/><\/span><\/h6>\n<h6><span data-contrast=\"auto\">Figure 1.0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/h6>\n<p><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\"><strong>Challenge one: Who controls the Code?<\/strong>\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The challenge is simple. The Operations team works on multiple solutions to support the up-time, management, and delivery of the environment for the day-to-day. Adding code management and control to their responsibilities is a big jump for most operations teams as illustrated in figure 2.0<\/span><\/p>\n<h6><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{}\"> <img decoding=\"async\" class=\"alignnone wp-image-9917\" src=\"https:\/\/sterling.com\/stargazer\/wp-content\/uploads\/2020\/07\/figure-2-2-300x198.png\" alt=\"\" width=\"373\" height=\"246\" \/><\/span><\/h6>\n<h6><span data-contrast=\"auto\">Figure 2.0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/h6>\n<p><span data-contrast=\"auto\">Another challenge is having your code testing environment mirror production. Developers will code the script and code for the test environment, only to find out once it is pushed, something is different in the production environment leading to code failure. A simple solution to the question of control comes from an earlier employer who said, &#8220;If you build the code you control the code.&#8221;\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Developers are always working in their IDE or &#8220;Integrated Development Environment&#8221; to test and compile their functions. After the mechanics of those functions check out, the code is pushed to the repository. Then, it is tested against the development\/test environments to ensure the functionality is good and has the means to be verified for production via a request and Change-Advisory Board (CAB), Some companies refer to this as a Pull Request (PR). Once approved, the code is then ready for delivery. The question of who controls the code does not end here. Differences in the test\/development\/production environment can create another obstacle; the code that is already in production. This presents an exceedingly complicated issue as developers are now out of the loop (they are not part of the push to production). Operations must figure out what has changed in the current production environment and report back. As bad as that sounds, it is even worse when your codebase is not up to date at this point, as the code in production does not reflect the code in the repository. Hopefully, by now you see the challenge that invariably can lead to a huge mess. <\/span><span data-ccp-props=\"{}\">\u00a0<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><strong>Challenge Two: Access\u00a0\u00a0<\/strong><\/p>\n<p><span data-contrast=\"auto\">There are two ways to control access in an operational mindset, whether to give it to developers or not? What happens if you give access to the developers? Having always been an advocate for helping developers with their job, as servers with no apps rarely make money. For this reason, granting specific rights to the developers makes complete sense. However, this does lead to security and management teams, and even developer managers to get involved with managing stability and phrases like, &#8220;time to release&#8221;. Once developers move into the server plane, they start asking the same questions that have already been asked and answered by the ops team. This duplication of efforts causes inefficiency and loss of time. This is especially true in the environment surrounding their production servers. See figure 3.0 shows the breakdown in communication.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\"> <img decoding=\"async\" class=\"alignnone wp-image-9918\" src=\"https:\/\/sterling.com\/stargazer\/wp-content\/uploads\/2020\/07\/figure-3-1-300x154.png\" alt=\"\" width=\"478\" height=\"245\" \/><\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h6><span data-contrast=\"auto\">Figure 3.0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/h6>\n<p><span data-contrast=\"auto\">On the other hand, when Operations says, \u201cwe will handle it,\u201d the control of code is then broken, and the Operations team moves into the Developers world. This is less invasive than the other as Operations only controls one function (See figure 2). To a Developer, it is the same. The cycle of controlling the code to production, changing of code, communication trials, etc., it all leads back to the same mess. The code in the repository will not perfectly match what is running in the production environment. The Operations team takes on too much and is blamed for bad code rolls. Thus, the divide between Development and Operations grows as each side points fingers, creating more disconnect between the Development and Operations teams.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><strong>Moving to Continuous Integration\u00a0\u00a0<\/strong><\/p>\n<p><span data-contrast=\"auto\">Finally, our hero enters; Continuous Integration (CI) is an amazing tool designed to solve these challenges. First, starting on the Operations side, the CI tool is granted access to both the Development and the Operations side of the environment. This ensures the proper delivery of the code to the environment it is intended for. CI can even run checks on canary runs to verify if the code is good before deploying. This can save a ton in rollback and interruption time. From its roots in mining, the term &#8220;Canary runs&#8221; refers to test runs. Miners would take canaries into mines. If there was harmful gas or anything that could harm the miners, the canary would be a warning to the miners to get out. This same principle applies to the code. When a canary test is run, a user (or virtual test) can test the code and report whether the code is genuinely good for production to the developer<\/span><span data-contrast=\"auto\">.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">If your development and production environments are different, the process of using the CI tool will shine a light on that because you can code errors. That will dictate what Operations will need to change to continue the code roll. This also helps Operations, as they live in a mindset that dictates, &#8220;If it&#8217;s not broke, don&#8217;t fix it.\u201d Operations will not touch anything unless a specific notation shows an error to support a stringent CAB policy that would take weeks to adjust to production.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Moving past the subject of finding solutions to the challenges that plague the Development and Operations teams, going to a Continuous Integration\/Continuous Delivery tool-set grants even more functionality to the Development team. The acronym uses the word &#8220;continuous&#8221; or &#8220;constant&#8221; to show how your repository for your code is always attached to the environment it has targeted. This means that, as soon as the code is approved for your &#8220;Master&#8221; or &#8220;Production&#8221; branch, it is at once pushed to the production environment. This can insight fear into those who worry about the interruption. Again, that goes to the CI\/CD tool you use. You can set the tool to run against the environment at the exact time you approve it, but you can also schedule the deployment for a maintenance window that would not interfere with daily operations or cause a stoppage. All of this would be hashed out during the PR (Pull Request) discussion.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">By finding and recognizing the challenges that face and divide Development and Operations teams, using a CI\/CD toolset, with a single source of truth (Code Repository) can resolve these challenges easily. In a world of division, it is nice to have resources and solutions that will help create harmony in the workplace for a better outcome.\u00a0\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>written by Nathan Bennet Code updates can be very frustrating. Having spent time on the operations side of a code deploy, it is always difficult for an engineer to perform [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":9919,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,13,15,11],"tags":[],"class_list":["post-9915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","category-blog","category-data-center","category-news"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0 - Sterling<\/title>\n<meta name=\"description\" content=\"Creating harmony between development and operations with Continuous Integration and Continuous Delivery as a tool. Deliver seamless execution of code.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0 - Sterling\" \/>\n<meta property=\"og:description\" content=\"Creating harmony between development and operations with Continuous Integration and Continuous Delivery as a tool. Deliver seamless execution of code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sterling.com\/stargazer\/?p=9915\" \/>\n<meta property=\"og:site_name\" content=\"Sterling\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/facebook.com\/SterlingComp\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-05T12:50:38+00:00\" \/>\n<meta name=\"author\" content=\"Sterling\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sterlingcomp\" \/>\n<meta name=\"twitter:site\" content=\"@sterlingcomp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sterling\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915\"},\"author\":{\"name\":\"Sterling\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#\\\/schema\\\/person\\\/b812a18f3a1e77cd0925429d1546e49d\"},\"headline\":\"Continuous Integration and Continuous Delivery (CI\\\/CD)\u00a0\u00a0\",\"datePublished\":\"2020-08-05T12:50:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915\"},\"wordCount\":1425,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#primaryimage\"},\"thumbnailUrl\":\"\",\"articleSection\":[\"Announcements\",\"Blog\",\"Data Center\",\"News\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915\",\"url\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915\",\"name\":\"Continuous Integration and Continuous Delivery (CI\\\/CD)\u00a0\u00a0 - Sterling\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2020-08-05T12:50:38+00:00\",\"description\":\"Creating harmony between development and operations with Continuous Integration and Continuous Delivery as a tool. Deliver seamless execution of code.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?p=9915#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Continuous Integration and Continuous Delivery (CI\\\/CD)\u00a0\u00a0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#website\",\"url\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/\",\"name\":\"Sterling\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#organization\",\"name\":\"Sterling\",\"url\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/Sterling-Computers-Logo-TM.png\",\"contentUrl\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/Sterling-Computers-Logo-TM.png\",\"width\":399,\"height\":145,\"caption\":\"Sterling\"},\"image\":{\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"http:\\\/\\\/facebook.com\\\/SterlingComp\\\/\",\"https:\\\/\\\/x.com\\\/sterlingcomp\",\"https:\\\/\\\/www.instagram.com\\\/sterlingcomputers\\\/\",\"http:\\\/\\\/youtube.com\\\/@sterlingcomp\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sterling-computers\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/#\\\/schema\\\/person\\\/b812a18f3a1e77cd0925429d1546e49d\",\"name\":\"Sterling\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/49107847cab9312fecfc9475e27da24373a491ca9faf45408ea019ad846f2c44?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/49107847cab9312fecfc9475e27da24373a491ca9faf45408ea019ad846f2c44?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/49107847cab9312fecfc9475e27da24373a491ca9faf45408ea019ad846f2c44?s=96&d=mm&r=g\",\"caption\":\"Sterling\"},\"url\":\"https:\\\/\\\/sterling.com\\\/stargazer\\\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0 - Sterling","description":"Creating harmony between development and operations with Continuous Integration and Continuous Delivery as a tool. Deliver seamless execution of code.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0 - Sterling","og_description":"Creating harmony between development and operations with Continuous Integration and Continuous Delivery as a tool. Deliver seamless execution of code.","og_url":"https:\/\/sterling.com\/stargazer\/?p=9915","og_site_name":"Sterling","article_publisher":"http:\/\/facebook.com\/SterlingComp\/","article_published_time":"2020-08-05T12:50:38+00:00","author":"Sterling","twitter_card":"summary_large_image","twitter_creator":"@sterlingcomp","twitter_site":"@sterlingcomp","twitter_misc":{"Written by":"Sterling","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sterling.com\/stargazer\/?p=9915#article","isPartOf":{"@id":"https:\/\/sterling.com\/stargazer\/?p=9915"},"author":{"name":"Sterling","@id":"https:\/\/sterling.com\/stargazer\/#\/schema\/person\/b812a18f3a1e77cd0925429d1546e49d"},"headline":"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0","datePublished":"2020-08-05T12:50:38+00:00","mainEntityOfPage":{"@id":"https:\/\/sterling.com\/stargazer\/?p=9915"},"wordCount":1425,"commentCount":0,"publisher":{"@id":"https:\/\/sterling.com\/stargazer\/#organization"},"image":{"@id":"https:\/\/sterling.com\/stargazer\/?p=9915#primaryimage"},"thumbnailUrl":"","articleSection":["Announcements","Blog","Data Center","News"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/sterling.com\/stargazer\/?p=9915","url":"https:\/\/sterling.com\/stargazer\/?p=9915","name":"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0 - Sterling","isPartOf":{"@id":"https:\/\/sterling.com\/stargazer\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sterling.com\/stargazer\/?p=9915#primaryimage"},"image":{"@id":"https:\/\/sterling.com\/stargazer\/?p=9915#primaryimage"},"thumbnailUrl":"","datePublished":"2020-08-05T12:50:38+00:00","description":"Creating harmony between development and operations with Continuous Integration and Continuous Delivery as a tool. Deliver seamless execution of code.","breadcrumb":{"@id":"https:\/\/sterling.com\/stargazer\/?p=9915#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sterling.com\/stargazer\/?p=9915"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sterling.com\/stargazer\/?p=9915#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/sterling.com\/stargazer\/?p=9915#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sterling.com\/stargazer\/"},{"@type":"ListItem","position":2,"name":"Continuous Integration and Continuous Delivery (CI\/CD)\u00a0\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/sterling.com\/stargazer\/#website","url":"https:\/\/sterling.com\/stargazer\/","name":"Sterling","description":"","publisher":{"@id":"https:\/\/sterling.com\/stargazer\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sterling.com\/stargazer\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sterling.com\/stargazer\/#organization","name":"Sterling","url":"https:\/\/sterling.com\/stargazer\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sterling.com\/stargazer\/#\/schema\/logo\/image\/","url":"https:\/\/sterling.com\/stargazer\/wp-content\/uploads\/2023\/03\/Sterling-Computers-Logo-TM.png","contentUrl":"https:\/\/sterling.com\/stargazer\/wp-content\/uploads\/2023\/03\/Sterling-Computers-Logo-TM.png","width":399,"height":145,"caption":"Sterling"},"image":{"@id":"https:\/\/sterling.com\/stargazer\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/facebook.com\/SterlingComp\/","https:\/\/x.com\/sterlingcomp","https:\/\/www.instagram.com\/sterlingcomputers\/","http:\/\/youtube.com\/@sterlingcomp","https:\/\/www.linkedin.com\/company\/sterling-computers"]},{"@type":"Person","@id":"https:\/\/sterling.com\/stargazer\/#\/schema\/person\/b812a18f3a1e77cd0925429d1546e49d","name":"Sterling","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/49107847cab9312fecfc9475e27da24373a491ca9faf45408ea019ad846f2c44?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/49107847cab9312fecfc9475e27da24373a491ca9faf45408ea019ad846f2c44?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/49107847cab9312fecfc9475e27da24373a491ca9faf45408ea019ad846f2c44?s=96&d=mm&r=g","caption":"Sterling"},"url":"https:\/\/sterling.com\/stargazer\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=\/wp\/v2\/posts\/9915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9915"}],"version-history":[{"count":0,"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=\/wp\/v2\/posts\/9915\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sterling.com\/stargazer\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}