<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sachin Gupta</title>
    <description>The latest articles on DEV Community by Sachin Gupta (@sachgupta).</description>
    <link>https://dev.to/sachgupta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1222964%2Fb34bc5fd-e493-48ab-96da-31155e38aa1f.jpg</url>
      <title>DEV Community: Sachin Gupta</title>
      <link>https://dev.to/sachgupta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sachgupta"/>
    <language>en</language>
    <item>
      <title>Client Devsecops</title>
      <dc:creator>Sachin Gupta</dc:creator>
      <pubDate>Thu, 30 Nov 2023 23:55:13 +0000</pubDate>
      <link>https://dev.to/sachgupta/client-devsecops-342m</link>
      <guid>https://dev.to/sachgupta/client-devsecops-342m</guid>
      <description>&lt;p&gt;This is a 5 articles series on how to design and implement more scalable, agile-aligned, and futuristic “Devsecops”.&lt;/p&gt;

&lt;p&gt;This is the 5th article in the series.&lt;/p&gt;

&lt;p&gt;If your platform is multi-client, you need devsecop to create client context(tenant) and associated rules, policies, configurations, data-pipelines etc. Many a times, this includes spawning new microservices specific to your client.&lt;/p&gt;

&lt;p&gt;Client context should be deployed per platform, so as defined in infrastructure and platform devsecops, platform manifest file should have a place-holder for specifying client contexts to be deployed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EKesPBgO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/crkdfu8yvrv3e1tuo5w6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EKesPBgO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/crkdfu8yvrv3e1tuo5w6.png" alt="Image description" width="562" height="670"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Client specific configuration itself can be maintained in client manifest, which would be referred in infrastructure manifest file.&lt;/p&gt;

&lt;p&gt;Client deployment should have separate workflows, that should be invoked based on clients list to be enabled for a deployment or not. Client identities should be maintained in infrastructure vaults.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Application Devsecops</title>
      <dc:creator>Sachin Gupta</dc:creator>
      <pubDate>Thu, 30 Nov 2023 23:47:23 +0000</pubDate>
      <link>https://dev.to/sachgupta/application-devsecops-224l</link>
      <guid>https://dev.to/sachgupta/application-devsecops-224l</guid>
      <description>&lt;p&gt;This is a 5 articles series on how to design and implement more scalable, agile-aligned, and futuristic “Devsecops”.&lt;/p&gt;

&lt;p&gt;This is the 4th article in the series.&lt;/p&gt;

&lt;p&gt;As discussed in previous article Application devsecops should be agile aligned and should facilitate development teams, QA teams and Release Manager.&lt;br&gt;
Importants points to consider during Application devsecops are following –&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Code management should be handled entirely by development team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code should be released in packages for feature testing and for release testing, and same package should move from QA, Staging to Production. This puts the requirement that any code developed be it UI dashboards or workflows or anything, it should be portable across environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous development should be facilitated by relevant CI pipeline and stages for code review, unit testing, code coverage, vulnerability scanning, pen testing and put CI gates to make sure only relevant code will go for QA.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous integration of the code should be facilitated by automatically generating nightly builds and running automated regression suits to ensure anytime merge code is deployable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous deployment should be facilitated by deployment pipelines that can deploy various releases and feature releases one touch on various environments seamlessly with built-in approval process with different approvers per environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most important base for application devsecops is the branching strategy of your code repo. Code repo should facilitate parallel development, testing and releases. &lt;/p&gt;

&lt;p&gt;It should consist of three branches mainly –&lt;br&gt;
&lt;em&gt;Feature branches&lt;/em&gt;– For parallel development of features. Owned by Development&lt;br&gt;
&lt;em&gt;Continuous Integration branch&lt;/em&gt; – For continuous integration with ready to deploy code. Owned by QA.&lt;br&gt;
&lt;em&gt;Release branch&lt;/em&gt; – For releasing package to production. Owned by Release Manager&lt;br&gt;
&lt;em&gt;Production branch&lt;/em&gt; – For production release. Owned by SRE.&lt;/p&gt;

&lt;p&gt;Presented below is a devsecops strategy for application development and deployment. Indicating various branches, roles and pipelines facilitating the development, validation, release and deployment of your software projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NssioHtD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s68ctzaglpnoutuhs52b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NssioHtD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s68ctzaglpnoutuhs52b.png" alt="Image description" width="800" height="766"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Generative AI to enhance Continuous Integration&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
With generative AI, CI pipelines can be extended by doing chat-gpt reviews for code other than manual reviews.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agile Aligned Application Devsecops</title>
      <dc:creator>Sachin Gupta</dc:creator>
      <pubDate>Thu, 30 Nov 2023 23:02:44 +0000</pubDate>
      <link>https://dev.to/sachgupta/agile-aligned-application-devsecops-18p9</link>
      <guid>https://dev.to/sachgupta/agile-aligned-application-devsecops-18p9</guid>
      <description>&lt;p&gt;This is a 5 articles series on how to design and implement more scalable, agile-aligned, and futuristic “Devsecops”.&lt;/p&gt;

&lt;p&gt;This is the 3rd article in the series.&lt;/p&gt;

&lt;p&gt;Devsecops is mainly for software development and release, but if the software development process is agile based, it is important for devsecops to align with Agile and streamline along with Agile processes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RMRBAxm6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tiw0cibc4u1x6p7t5741.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RMRBAxm6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tiw0cibc4u1x6p7t5741.png" alt="Image description" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oe3vhEZ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7leyum9215y3bq6mk3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oe3vhEZ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7leyum9215y3bq6mk3t.png" alt="Image description" width="800" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eWWyxbom--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qsahu9p7i9o0tey6j9e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eWWyxbom--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qsahu9p7i9o0tey6j9e6.png" alt="Image description" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0lcoz5Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dp1nu2fcuop7q7pkv8yz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0lcoz5Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dp1nu2fcuop7q7pkv8yz.png" alt="Image description" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tckImB7O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3rbgf1oudqkzjqiptak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tckImB7O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3rbgf1oudqkzjqiptak.png" alt="Image description" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ctlGvPnc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6k0ppv572ycj7kzjgks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ctlGvPnc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6k0ppv572ycj7kzjgks.png" alt="Image description" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Devsecops shouldn’t just facilitate CI-CD pipelines for testing of code, creation of artifacts or deployment of artefacts, but devsecops should also facilitate agile process flow, by integrating agile process related communication like release of build to QA integrated in the pipeline. Same way with deployment too once the platform is ready a notification is required. Same when Release Manager cuts a release communication of release artifacts should automatically go to QA and SRE, QA validation completion notification should automatically give release notification for production deployment.&lt;/p&gt;

&lt;p&gt;Besides this for each feature Jira ticket should automatically get updated to keep track of feature current state. This all can be done by integrating CI-CD with Teams channels/Slack, Jira and Confluence.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Infrastructure &amp; Platform Devsecops</title>
      <dc:creator>Sachin Gupta</dc:creator>
      <pubDate>Thu, 30 Nov 2023 22:34:21 +0000</pubDate>
      <link>https://dev.to/sachgupta/infrastructure-platform-devsecops-5b35</link>
      <guid>https://dev.to/sachgupta/infrastructure-platform-devsecops-5b35</guid>
      <description>&lt;p&gt;This is a 5 articles series on how to design and implement more scalable, agile-aligned, and futuristic “Devsecops”.&lt;/p&gt;

&lt;p&gt;This is the 2nd article in the series.&lt;/p&gt;

&lt;p&gt;Platform should be represented as a configuration, which dictates the configuration of the platform deployed. Platform configuration should give enough knobs to dictate the component configurations and deployment method. &lt;br&gt;
Manifest files – Defines full platform in a single configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aiX0-8zx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uw8884cqh743w4i4lidf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aiX0-8zx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uw8884cqh743w4i4lidf.png" alt="Image description" width="638" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Deployment Flavours *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TkFQtrTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3k9g5pi04xdmbtwfh7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TkFQtrTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3k9g5pi04xdmbtwfh7t.png" alt="Image description" width="800" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Deployment Methods *&lt;/em&gt;&lt;br&gt;
 Disrupting - This is suitable for non-production deployment, where requirement is to deploy as fast and least costly as possible.&lt;br&gt;
 Non-disrupting or Make-before-break - This is suitable for production deployment, where there is a requirement to have no disruption or minimal disruption.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3NEm02DA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hxhynbsyb5dk74n2uc20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3NEm02DA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hxhynbsyb5dk74n2uc20.png" alt="Image description" width="800" height="149"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component Versioning&lt;/strong&gt;&lt;br&gt;
This allows versioning of platform components that can be then independently tested and rolled into different deployments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d4U-x-HT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0iys6a4n5dfltmrnq6v7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d4U-x-HT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0iys6a4n5dfltmrnq6v7.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Global Deployment of Platforms&lt;/strong&gt;&lt;br&gt;
Global deployment, management and monitoring is sometime crucial for infrastructure devsecops. There are certain requirements that needs to be fulfilled for achieving that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Centralized Management&lt;/strong&gt; – Infrastructure devsecops should be able to manage all the platform from a single place. In this case manifest file is the source of truth and repo is that single place. Beside this platform component feature release and deployment will also be taken care by component versioning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Centralized Monitoring&lt;/strong&gt; – Each of your deployment should have monitoring components deployed that will feed into a central monitoring unit managed by SRE engineers 24x7. Automatically devsecops should deploy telemetry components and integrated this with centralized monitoring and alert.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Centralized Secret Management&lt;/strong&gt; – All the platform secrets and states should also be centrally managed and controlled. Secret refreshments and updates are very much integral part of deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Governance&lt;/strong&gt; – Necessary deployment approval and review process should be integral part inbuilt into devsecops.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3eEj6fiP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ug2el5h41r4wycz5bsez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3eEj6fiP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ug2el5h41r4wycz5bsez.png" alt="Image description" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agile Devsecops</title>
      <dc:creator>Sachin Gupta</dc:creator>
      <pubDate>Thu, 30 Nov 2023 18:06:22 +0000</pubDate>
      <link>https://dev.to/sachgupta/agile-devsecops-3if7</link>
      <guid>https://dev.to/sachgupta/agile-devsecops-3if7</guid>
      <description>&lt;p&gt;This is a 5 articles series on how to design and implement more scalable, agile-aligned, and futuristic “Devsecops”.&lt;/p&gt;

&lt;p&gt;This is the 1st article in the series.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Design and Implementation of Scalable, Agile and Futuristic Devsecops&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Purpose of Devsecops implementation is to automate software development and operation, blending nicely with Agile process and should be future looking.&lt;/p&gt;

&lt;p&gt;A devsecops stack should mimic your full stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MCPVQtPm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tvw1a06atqgchl1b608n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MCPVQtPm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tvw1a06atqgchl1b608n.png" alt="Image description" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Devsecops should automate infrastructure deployment for various environments (dev, validation, staging, production) providing different flavours. Besides this it should be able to manage and monitor those platforms and should manage secrets too centrally. There should be a tight control in terms of reviews and approval who can deploy infrastructure components.&lt;/p&gt;

&lt;p&gt;Same way if you are building your own microservices for platform that too should be centrally developed, managed, and deployed falling through full agile process.&lt;/p&gt;

&lt;p&gt;Application and feature development should facilitate agile aligned ci-cd and should provide central release management too.&lt;br&gt;
If your platform supports multiple clients, then tenant creation for customer and any policy, rules and customer specific configuration too should be automated and centrally managed. &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
