DevOps and CodeOps Tools

DevOps and CodeOps tools integrated for cloud deployment and automation.

Overview

The Codeops and DevOps tool started to become essential as the environment started to grow. Over the course of about 4-6 weeks due to the code generation, the platform balooned from about 30K lines to almost 90K lines of code as the data model was fully flushed out. At the same time a lot of the hand written code was refactored into a cohesive set of libraries that were reusable and Django was transitioned into a more sophisticated front and backend with multiple sub projects (common_features, owner and tenant). This combined with the introduction of the new laptop basically resulted in having to stop and clean up everything. Admittedly, the stop and clean up everything happened about 6-7 times over the course of the project , approximately every 2-3 weeks as the scope grew and I could ‘see’ more of the platform taking shape it would become clear that a new abstraction or better organization was required. Every time I ended up doing the cleanup, I would reflect that in an enterprise, so much of this would be given to me on day 1 (project organization, devops, codeops, processes). In reality, I would probably have considered it a pain in the neck. Having had to abstract on the go and re-organize on the go , I defintiely think of it differently now.

Key Goals:

Status: In Progress

Complexity: Medium

Components

GitHub

Implemented version control, branching strategies, and project tracking.

SOARL Summary

    Situation:

    • Required best-practice code management across multiple machines and services.

    Obstacle:

    • Keeping environments in sync** was occasionally problematic due to initial poor folder structuring.

    • Ensured no sensitive information (API keys, credentials) leaked into GitHub.

    Action:

    • Set up .gitignore properly to exclude sensitive files.

    • Refactored folder structures to support multi-service development.

    Result:

    • Now seamlessly moves between machines without syncing issues.

    Learning:

    • Proper Git hygiene matters—especially when managing multiple services (Django, FAISS, Redis, NLP utilities, etc.**).

Docker

Containerized Django, FAISS, and supporting services for streamlined deployment.

SOARL Summary

    Situation:

    • Introduced Docker after managing too many terminal sessions manually—services needed consolidation.

    Obstacle:

    • Docker setup required careful structuring—ensuring correct **directory paths, variables, and dependencies.

    • Refactored hardcoded configurations to prepare for GCP deployment.

    Action:

    • Created optimized Docker images, reducing bloated builds from 9GB to ~1GB.

    • Separated environments into distinct virtual environments, improving modularity.

    Result:

    • Clean, lightweight Docker containers** make deployments faster and easier to manage.

    Learning:

    • Breaking services into optimized environments** makes Docker builds leaner and faster.

Terraform

Automating cloud infrastructure provisioning for consistent, cost-efficient deployments.

SOARL Summary

    Situation:

    • Needed a repeatable way to deploy cloud resources without manual configuration.

    Obstacle:

    • Ensuring Terraform correctly managed** cloud permissions and resource dependencies.

    Action:

    • Set up Terraform scripts to define GCP configurations.

    Result:

    • Deployment consistency improved, and cost tracking became easier.

    Learning:

    • Infrastructure as Code (IaC) reduces cloud misconfigurations and prevents unnecessary cost spikes**.

Kubernetes

Managing Django, FAISS, and Redis as orchestrated services within a Kubernetes cluster.

SOARL Summary

    Situation:

    • Required a way to scale and manage containerized services in production.

    Obstacle:

    • Learning Kubernetes configurations, deployments, and networking.

    Action:

    • Set up a Google Kubernetes Engine (GKE) cluster to manage workloads efficiently.

    Result:

    • Services run seamlessly in an orchestrated environment, improving scalability.

    Learning:

    • Kubernetes simplifies multi-service management** but requires careful setup to optimize scaling.

Key Learnings

Demos

Final Thoughts

As soon as you go beyond a few scripts having an efficiently organized project folder is essential. Even though I had brainstormed on many of these items before I started with an initial guess, I ultimately needed to have the platform take shape before I was able to optimize for it 🚀

Tags

Cloud Deployment DevOps Infrastructure as Code

Back to Portfolio