Can anyone provide some insights as to how one wou...
# general
p
Can anyone provide some insights as to how one would start an Internal Developer Platform without reaching for k8s due to the fact that we might not have k8s expertise within an organization?
a
Start small. Internal developer platform doesn't need to be big or complicated. Start by looking at something that is easy to chew on which is a big time sink for developers and build a tool to help with it. Even a bash script which copies a build artifact onto a static compute host can be considered a very basic idp. Once you have something small then build on top of it. Rinse and repeat.
It does help to decide early on about at least one place to centralize all of your tooling, such as a small cli app. This will make it easy for developers to know where to reach when they want to follow the golden path.
p
What kind of functionality would this tooling provide?
a
FWIW, I know this will be an unpopular opinion, but I think K8s is over-used. I think it is an invaluable tool in the right application but too many teams reach for a big complicated thing too early. My team manages well north of 500 services and we are perfectly happy with ECS.
Don't be afraid of simple tools, as you outgrow them you can iterate.
...
p
I'm basically starting on a greenfields project, so there's quite a bit to setup • dns • load balancers • container registries etc
would you mind if I continue picking your brain on this as I continue on my journey?
Going to be using GitHub Actions for deployment pipelines...
we have a couple of new services which is why we are looking at an IDP
a
How many services are there to manage and what is your scale? If the number is low there is no shame in starting up a load balancer in the console first and then automating the infrastructure later.
Think hard about what will take a lot of time to automate vs what you spend a lot of time repetatively doing now. If doing something in the console is fast, and doesnt create big tech debt then just do the fast easy thing for now and automate later.
p
There will be about 4 services to start off with, but with the idea that we will introduce many many more in a short amount of time
a
terraform
is a good starting place. When you only have a few services to manage. This takes some setup time but is fairly low overhead after that and then at least all of your infra is encoded and tracked in VCS.
p
Yeah, we already have a well established terraform codebase... we are also using Pulumi for new products/services
a
Deployments are usually a good place to focus on first rather than provisioning infrastructure. Provisioning infrastructure, in my experience, at smaller enterprises is much less frequent and can be done fairly manually without a lot of pain for a while. Get a good CI/CD pipeline going first and then automate provisoning later when you have time and it becomes a pain point.
When you do start provisioning infrastructure automatically lean on template generation, its very powerful and allows for iteration on the infrastructure more easily than if the infrastructure is checked in some place.
p
That's the bit i'm not so sure about and that is... what is a "good" ci/cd pipeline? • We will have a number of environments • Services built using different languages / tools • We want to make sure we are able to also deploy into different geo-political regions to meet our customer requirements
Considering using github templates for this as a way to standardize some aspects of the pipelines
a
A good ci/cd pipeline will mean that developers can write code, easily test it locally or by deploying it to an existing development environment, easily create a PR and have automated tests run, then easily (and quickly!) be able to deploy that PR to production with strong confidence that nothing will break. All of this should be doable without needing to thing to much about the complexity. Either through git hooks or a couple simple cli commands.
p
If you have some examples to use as inspiration, that would be super useful
I can come up with a pretty opinionated way of building out products/services which will provide a skeleton / framework for development teams to do the above
a
Hi @Pieter it’s quite easy to get started with a DxP like Compass that can help with some of the things you’ve mentioned in this thread. Can literally have a portal up and running in <15 mins. It’s also free since it’s in beta, the pricing announcement also says the catalog will continue to be free even after it’s out of beta. Happy to help you get started if you’re stuck, otherwise you can join the Compass office hours, registration links for each region are: 👉 America (AMER) 11am PT | 1pm CST | 2pm ET Register here 👉 Europe (EMEA) 7am PT | 3pm GMT | 4pm CET Register here 👉 Asia-Pacific (APAC) 11am AEDT | 8am SGT Register here
p
@Andrew Boyagi thanks for the link, this do however seem like a bit of an upfront investment bigger than what we would currently need.
a
That’s interesting @Pieter, I assume you mean investment in time since it’s a free product?
p
@Andrew Marine investment in the sense that we don't know exactly what our IDP is yet or if we require such a tool?
a
Let me know if you change your mind and want some help 🙂
k
Maybe you could clarify what you hope the end goal would be. While there’s piles of reason you might use an IDP, which is your primary one, and the primary friction you want to reduce. Is standardization the primary goal? Other totally valid reasons might be to reduce impact on infrastructure teams by making things more self service and automated, or to speed up testing or deployment, or ensuring compliance with corporate/legal/ISO/security guidelines, etc but usually there’s one reason that’s paramount and can help guide your decision.
a
Have you considered outsourcing? a service to architect and set up your IDP, and if needed, externally manage the platform
c
Hi @Pieter, you could look at external development platforms rather than building an IDP until you get a better handle on your precise goals. You know, one of those processes where you use it to figure out what you don't need/what you really want. Shameless plug, my company, Divio, provides a PaaS like that. It's especially built for companies that need single-tenant architectures for less, comes with the enterprise Cloudflare plan pretty much for pennies, and it's ISO compliant. /plug All to say, quick solutions are out there. Mostly multi-tenant. Overall, I agree with @Andrew Marine. Beware getting caught chasing an overkill solution like K8s, whatever you do. It's really hyped, but it's not usually the best fit. You're right to take some time thinking this stuff through now, rather than jumping in feet first.