Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Operations & DevOps Procedures and Practices at Ingenious

Table of Contents

...

minLevel3
maxLevel6
outlinetrue
typelist
printablefalse

Introduction

In the ever-evolving landscape of technology, Ingenious saw the necessity of moving from traditional development practices to DevOps. Before this transformation, our company grappled with infrequent, bundled releases, which made bug identification and resolution a tedious task. Moreover, the absence of automated builds and the limited use of CI/CD systems hindered our efficiency.

  • Challenge: Managing bundled releases and identifying bugs.

  • Approach: Transition from bundled to frequent releases .Embraced automation and adoption of CI/CD systems.

...

...

DevOps Culture and Collaboration

Instead of traditional siloed roles, our team members wear multiple hats. We don’t maintain separate development and operations teams. Every developer at Ingenious bears a part of the operational responsibility, ensuring that there's a constant exchange of knowledge, fostering a culture of continuous learning and collaboration.

  • Unified team structure.

  • Every developer actively engages in operations.

...

  • Challenge: Siloed development and operations teams.

  • Approach: Merged roles with every developer taking up operational responsibilities. Intensive use of Slack.

Continuous Integration (CI) and Continuous Deployment (CD)

Using Jenkins, orchestrated on Kubernetes, we've been able to create a seamless CI/CD pipeline. This setup supports a majority of our applications, including Java, PHP, and Typescript, thereby ensuring faster and more reliable builds. The integration of tools like JUnit and the Testcontainer library further bolsters our testing procedures.

  • Challenge: Diverse applications needing consistent CI/CD.

  • Approach: Jenkins on Kubernetes for CI/CD .Unified pipeline supporting diverse applicationssupporting a unified pipeline.

...

Infrastructure as Code (IaC)

We've progressively embraced IaC, utilizing Kubernetes yaml descriptors stored on Github. While some core components, like our Kubernetes clusters and PostgreSQL databases, were initially set up manually, we're gearing up to fully adopt IaC, ensuring enhanced resilience and preparedness for unforeseen challenges.

...

.

  • Challenge: Manual setups for core infrastructure components.

  • Approach: Adopt Kubernetes yaml descriptors on Github.

  • Plans for full IaC adoption.

...

  • and plan for a broader IaC transition.

Containerization and Orchestration

For containerization, we employ Jib for our Java applications and Dockerfiles for others. With approximately 60 deployments in our ecosystem, we've standardized deployment metadata using a centralized Jenkins-pipeline, ensuring uniformity across our infrastructure.

  • Challenge: Standardizing deployment metadata across applications.

  • Approach: Jib for Java and , Dockerfiles for other applications.Centralized others, and a centralized Jenkins-pipeline for deployment standardization.

...

Configuration Management

We prioritize a systematic configuration management approach. Currently, configurations are stored as yaml files in git repositories alongside their respective applications. We envision a more centralized method in the future using a mono-git-repo for all configurations, enhancing both security and manageability.

  • Challenge: Dispersed configurations affecting security and manageability.

  • Yaml Approach: Store configurations stored with applications .Future shift towards and plan for a mono-git-repo.

...

Performance Optimization and Scalability

Backed by Prometheus for monitoring, integrated with Grafana for visualization, our infrastructure is tailored for high performance. Additionally, the Google Cloud Monitoring & Logging tools play a pivotal role in our central logging system. Our infrastructure is also optimized for scalability, utilizing both Kubernetes and Google Cloud's auto-scaling features to handle traffic surges efficiently.

  • Challenge: Efficiently handling traffic surges and maintaining performance.

  • Approach: Prometheus and Grafana for monitoring and visualization.Twointegration with a two-layered auto-scaling approachstrategy.

...

Feedback Loops and Continuous Improvement

Feedback is integral to our operations. Given our unified team structure, communication is streamlined, ensuring that insights from one team member benefit all. This feedback mechanism has often led to enhancements, particularly in our monitoring processes.

  • Seamless communication within the team.

  • Feedback-driven improvementsChallenge: Gaps in monitoring and continuous improvement.

  • Approach: Foster seamless communication and use feedback for refinements.

Conclusion

At Ingenious, our DevOps journey exemplifies adaptability and a forward-looking perspective. Our strategies and practices, though evolving based on current needs, are always anchored in delivering technical excellence to meet the demands of our developers and software architects.