July 31, 2026
Lessons & Reflections: How Building a DevSecOps Security Architecture Changed My Perspective
Part 6 of the “Implementing DevSecOps” series

By Lh1l0v3
5 min read
Introduction
When I started this series, my goal was to document the implementation of a DevSecOps security architecture for a deliberately vulnerable fintech microservices application.
The journey began with a simple idea: Shift Left, Verify Right.
From there, I explored threat modeling, automated security testing in CI/CD, Kubernetes runtime security, and the security controls that protect applications throughout the Software Development Life Cycle.
While the project introduced me to a wide range of technologies, including GitHub Actions, SonarQube, Trivy, Checkov, OWASP ZAP, OPA Gatekeeper, HashiCorp Vault, Falco, and Kubernetes, the most valuable lessons were not about the tools themselves.
They were about how security should be approached.
This final article reflects on the ideas that changed my perspective throughout the project.
Lesson 1: Security Starts Long Before Code Exists
Before this project, I often associated application security with testing code or scanning for vulnerabilities.
Threat modeling challenged that mindset.
Before writing a single line of security automation, I had to understand the system itself.
What assets needed protection?
Who might attack them?
Where were the trust boundaries?
How did sensitive data move between services?
Answering those questions made every technical decision more intentional. I realized that effective security begins during design, not after development.
Lesson 2: DevSecOps Is More Than a CI/CD Pipeline
Many discussions about DevSecOps focus almost entirely on GitHub Actions, Jenkins, or other CI/CD platforms. While automation is important, the project demonstrated that DevSecOps extends far beyond pipeline configuration.
Threat modeling informed the security strategy.
CI/CD automated security validation.
Runtime controls continued protecting workloads after deployment.
Observability provided visibility into the health and behaviour of the system.
The pipeline was only one component of a much larger security lifecycle.
Lesson 3: Every Security Control Should Solve a Specific Problem
One of the biggest changes in my thinking was learning to stop viewing security tools as a checklist.
Every control in the architecture existed because it addressed a particular risk.
GitLeaks helped detect exposed secrets.
SonarQube identified insecure coding practices.
Trivy highlighted vulnerable dependencies.
Checkov validated infrastructure configurations.
OWASP ZAP tested the running application.
Falco monitored runtime activity.
HashiCorp Vault protected sensitive credentials.
OPA Gatekeeper enforced deployment policies.
Network Policies reduced opportunities for lateral movement.
None of these tools replaced one another.
Together, they formed layers of defence that supported different stages of the software lifecycle.
Lesson 4: Every Vulnerability Has a Business Impact
One of the biggest shifts in my thinking was learning to look beyond the technical details of a vulnerability.
Before this project, it was easy to classify findings as SQL Injection, Broken Access Control, exposed secrets, or vulnerable dependencies. Those labels are useful, but they only describe the technical problem.
Working on a fintech application forced me to ask a different question.
What would this vulnerability mean for the business if it were exploited?
A SQL injection vulnerability is not just a database flaw. It could expose customer financial records, disrupt transactions, or lead to regulatory penalties.
Weak authentication is not simply an implementation mistake. It could allow unauthorized access to customer accounts, resulting in financial loss and damage to customer trust.
An exposed secret is not just a leaked credential. It could provide attackers with access to cloud infrastructure or internal services, potentially leading to service outages or data breaches.
Thinking in terms of business impact changed how I approached security decisions. Instead of asking, "How severe is this vulnerability?" I began asking, "What could this cost the organization, its customers, and its reputation?"
That shift helped me understand that application security is not only about identifying vulnerabilities. It is about reducing business risk.
Lesson 5: Automation Improves Consistency, Not Perfection
One of the strengths of DevSecOps is automation.
Every commit was scanned using the same security checks.
Every deployment followed the same security requirements.
Every image was validated before reaching production.
Automation reduced human error and made security repeatable.
However, it did not eliminate the need for engineering judgement.
Security findings still require investigation.
False positives still need validation.
Risk still requires context.
Automation supports security teams, but it does not replace them.
Lesson 6: Runtime Security Completes the Picture
Before working on this project, most of my attention was focused on vulnerabilities introduced during development.
Implementing runtime controls expanded that perspective.
Applications continue running long after they have passed a CI/CD pipeline.
New vulnerabilities emerge.
Attackers adapt.
Infrastructure changes.
Runtime security provides continuous verification that workloads remain secure after deployment.
This reinforced the second half of the philosophy introduced at the beginning of this series.
Verifying right is not a single activity.
It is an ongoing process.
Lesson 7: Security Is an Engineering Discipline
Perhaps the most important lesson from this project was recognizing that security is not simply a collection of tools or compliance requirements.
It is an engineering discipline.
Every decision influences another.
Architecture influences threat models.
Threat models influence security controls.
Security controls influence deployment.
Deployment influences monitoring.
Monitoring influences future improvements.
Understanding those relationships made the project feel less like integrating security products and more like designing a resilient system.
What I Would Improve Next Time
Every implementation creates new opportunities for improvement.
If I were extending this architecture further, I would consider:
- Expanding policy enforcement with additional admission controls.
- Introducing GitOps workflows to strengthen deployment consistency.
- Incorporating compliance validation into the pipeline.
- Enhancing runtime detection with custom Falco rules.
- Simulating attack scenarios to evaluate incident response capabilities.
Security is an iterative process, and every project creates new opportunities to improve the next one.
Advice for Engineers Beginning Their DevSecOps Journey
If you're just beginning your DevSecOps journey, my biggest piece of advice is simple. Don't start with the tools, start by understanding the system, learn how applications are designed, understand how data moves between services, identify trust boundaries, think about what attackers are trying to accomplish.
Once those concepts become clear, the purpose of security tools becomes much easier to understand. Technology changes quickly. Security principles remain relevant.
Final Thoughts
Looking back, this project gave me far more than experience with Kubernetes, CI/CD pipelines, or application security tools.
It changed how I think about secure software delivery.
At the beginning of this series, Shift Left, Verify Right was a concept I wanted to explore.
Today, I see it as a practical framework for building resilient software systems.
Shifting left means understanding risk early enough to make informed security decisions during design and development.
Verifying right means continuously validating those decisions through runtime monitoring, policy enforcement, and observability after deployment. Neither approach is sufficient on its own.
Together, they create a continuous approach to security that extends across the entire software development lifecycle.
As I continue my journey in Application Security and DevSecOps, this project will remain an important reminder that building secure software is not about using more tools. It is about understanding risk, making deliberate engineering decisions, and continuously improving how we protect the systems we build.
Resources
- Part 1: Shift Left, Verify Right: Building Security That Doesn't Slow Down Development
- Part 2: Implementing Shift Left, Verify Right in a Vulnerable FinTech Microservices Application
- Part 3: Threat Modeling a FinTech Microservices Application: Where DevSecOps Really Begins
- Part 4: Inside a DevSecOps CI/CD Pipeline: How Automated Security Checks Protect Every Commit
- Part 5: Beyond the Pipeline: Securing Kubernetes at Runtime with DevSecOps
- GitHub Repository: https://github.com/Lhilove/SecureFlow-DevSecOps
Acknowledgements
This series was inspired by a DevSecOps implementation project involving a deliberately vulnerable fintech microservices application. Working through the architecture, security controls, and implementation provided an opportunity to connect application security principles with practical engineering decisions across the software development lifecycle.