IT Infrastructure

How to Build IT Infrastructure for Small Projects

How to Build IT Infrastructure for Small Projects

This article offers advice on building infrastructure for small projects without a dedicated admin/DevOps engineer.

I’m often asked how to build infrastructure for small projects when the team doesn’t have any dedicated admin/DevOps engineers. In this article, I’ll discuss some organizational considerations for choosing between dedicated servers, the cloud, or Kubernetes.

Planning for Production

When planning any production application deployment, it’s important to consider at least the following five business processes/value streams:

  1. Application development
  2. Application configuration
  3. Server (or other runtime environment) configuration
  4. Deployment process configuration
  5. Auxiliary service configuration (e.g., monitoring, backups, etc.)

Components of a Production Environment

Any installation beyond a developer’s laptop will consist of at least the components shown in the illustration (blue and green stickers).

Each of these components is configured initially, changes are made to it regularly, and eventually, each component will likely be decommissioned and replaced. Ongoing support for each component also includes ensuring its functionality and responding to incidents.

The Importance of Process

These are the components of each of our five main processes, for a total of at least 20 typical operations or processes present in any modern installation.

Therefore, it’s necessary to consider how these operations will be performed, especially for changes and ongoing support, as these are the most frequent operations.

Business Processes vs. Value Streams

At the beginning of the article, I intentionally wrote “business processes/value streams” because we, as technical leaders, define what these will be. They can be classic checklist instructions or BPMN diagrams, in which case it’s appropriate to refer to them as “business processes.” They can also be fully automated Software Defined Processes, in which case we’ll likely refer to them as Value Streams. Often, when DevOps is contrasted with “classical IT,” it refers to changing this paradigm from “business processes” to “Value Streams.”

Struggling with infrastructure for your projects? Gart can help! Get expert guidance and simplify your deployments.

Delegating to a Sysadmin/DevOps Engineer

Alternatively, we can delegate this process entirely to an employee (sysadmin or DevOps engineer) without considering what happens in the process and hope that when this employee eventually leaves, a new employee will be able to figure it out. If we accept this risk, then we don’t really care how this employee works – whether they copy artifacts via FTP or write code in Ansible and Terraform.

Key Considerations

The key here is that for our production and development to behave predictably, we need to:

  1. Identify the components involved in the development-delivery-operation process. The illustration shows an example of such a component breakdown.
  2. Decide for each component how changes will be made, who is responsible, and how much responsibility to delegate to these people or scripts.
  3. Ensure that we make these same decisions for any new components that we add.

For complex installations, there may naturally be more components. For example, “Application Configuration” can often be divided into “Secrets,” “Endpoints,” and “Functional Configuration” (related to application logic). Or the “Runtime Environment” can consist of both “Virtual Servers” and “Orchestrator.”

Infrastructure as Code

For each of these components, we also need to develop a corresponding change process. As mentioned above, depending on the path we choose, these can be either extensive instructions or automation scripts. Or, we may have separate services that manage these components and take on all the complexity. For example, if we keep secrets in Vault, the entire process of changing secrets will consist of at least two steps:

  1. Change the secret through the Vault UI.
  2. Our automation scripts roll out these secrets to all services.

But this raises an interesting question: what to do with changes to this automation? The answer is simple – automation is essentially code, so we apply the Infrastructure as Code approach. To be more precise, we have Infrastructure as Code as a development process, which is not the same as Infrastructure as Scripts, as is often the case.

Conclusion

So, what do we do with all this knowledge?

For small installations with low infrastructure change frequency:

  • Document the five processes mentioned as they are used. This can be a single line of “gather the whole team and decide what to do,” and that’s okay.
  • Consider whether any of these processes can be improved.
  • Estimate how long we can live with these processes and when we’ll start to hit their efficiency limits.

For large installations with many infrastructure changes:

  • Develop infrastructure components using software development practices (classic “feature description -> backlog -> development -> testing -> release -> staging -> production”).
  • Identify data components in the infrastructure and document the process for working with them (e.g., configuration, secrets, etc.). This may result in tasks in the infrastructure development backlog.
  • Identify the remaining components and processes for which we do not apply IaC

Focus on innovation, not infrastructure. Let Gart handle your project deployments so you can bring your ideas to life faster!

Let’s work together!

See how we can help to overcome your challenges

FAQ

Why is a well-planned IT infrastructure important for small projects?

A strong IT foundation keeps your project organized, secure, and efficient. It allows for smooth collaboration, protects your data, and ensures everything runs smoothly from the start.

Do I need a physical office space to build IT infrastructure?

Not necessarily! Cloud-based solutions allow you to access most IT needs remotely. However, if your project involves physical servers or specific hardware, you'll need a designated space.

What are the key steps to take when building IT infrastructure?

Assessment: Evaluate your project's needs (software, storage, security). Budgeting: Determine how much you can realistically spend. Choosing Solutions: Cloud vs on-premise hardware, software options. Implementation: Set up the chosen technologies and configurations. Security: Implement data security measures and access controls.

Should I prioritize cloud-based solutions or traditional on-premise hardware?

Cloud solutions offer scalability, cost-effectiveness, and remote access. However, on-premise hardware might be necessary for specific security requirements or control over data storage.

What security measures should I consider for my IT infrastructure?

Strong passwords, access controls, data encryption, and regular backups are crucial to protect your project data and systems.
arrow arrow

Thank you
for contacting us!

Please, check your email

arrow arrow

Thank you

You've been subscribed

We use cookies to enhance your browsing experience. By clicking "Accept," you consent to the use of cookies. To learn more, read our Privacy Policy