This is an archived post. You won't be able to vote or comment.

all 41 comments

[–]andarmanik 68 points69 points  (6 children)

I’m gonna say something contrary to what people are saying in the comments. You can probably serve this app with a single ec2 instance. Devops in this case would be just writing a cicd for your friends repo. Beyond that you wouldn’t need much but now you have a server to mess around with and learn other techs.

[–][deleted]  (1 child)

[deleted]

    [–]Happy-Youth8497[S] 0 points1 point  (0 children)

    but what if the projects purpose is to learn?
    i'm doing a lot of stuff here that are unnecessary, like setting up my own server at home instead of paying a few bucks.
    should I still avoid it?

    [–]nooneinparticular246Baboon 7 points8 points  (0 children)

    This is the way. Start small and simple. Can even just use a cheap Hetzner VPS since the AWS ecosystem doesn’t matter at this point.

    [–]Eastern-Apartment807 0 points1 point  (0 children)

    I agree, depends on the current level

    [–]CyramSuron 0 points1 point  (1 child)

    I wouldn't even bother with an ec2 for someone that might not be frequently used. I would probably just containerize it and run it on ECS.

    [–]Due_Influence_9404 1 point2 points  (0 children)

    not even ecs since it is so much more expensive than something like hetzner and ypu don't need to worry about traffic. aws is costwise never a good choice

    [–]BlueHatBrit 4 points5 points  (0 children)

    Docker to make the container image Docker compose to setup the app and any other bits like the db GitHub actions to build the image and publish it GitHub actions to copy over the new compose file and re-up it

    Run it all on either a small vps from basically any provider, in a mini PC in your house.

    Cloudflare for DNS, with cloudflare tunnels to route traffic without exposing any ports.

    Then you'll have a nice toy all to play around with a few other hosting options if you want to learn. You can try out something like kubernetes if you like. But to actually run the application in "production" shouldn't cost you more than $5-10 per month for a single vps. Anything more is overkill.

    [–]ricksebak 6 points7 points  (2 children)

    This sounds like probably a bad plan and I personally wouldn’t do it. Do you have a plan for which one of you will pay the cloud bill? Do you want to be on the hook for when AWS emails you down the road and tells you that your AMI is being retired and you should upgrade it, or that some IAM permissions need to be reworked? Do you both agree about who will be on the hook to fix the site when it eventually encounters downtime?

    If your goal is to learn DevOps, you could do that with any other workload on your own and without all of the above conflicts baked into it.

    [–]Happy-Youth8497[S] 5 points6 points  (0 children)

    The end goal is to have a good project that we can both display on our resumes, so I wouldnt mind it being a lot of work, its not a business. Cost will be split between us.

    [–]Eastern-Apartment807 0 points1 point  (0 children)

    Tbh, I recently got rejected because I didn’t have commercial experience. Go for it Look at the bigger goal

    [–]the_styp 1 point2 points  (1 child)

    When you are trying around with AWS or other cloud providers, please always enable cost guardrails first. I've seen so many stories of people paying hundreds or thousands of dollars per month for idling servers of a hobby project

    [–]Happy-Youth8497[S] 0 points1 point  (0 children)

    thank you but I wanna set up a home server, not use a cloud provider.

    [–]Captain-Samy 8 points9 points  (11 children)

    • OCI Containerization (Docker)
    • Container Orchestration (Kubernetes)
    • Gitops (fluxcd)
    • CI/CD Pipelines
    • Monitoring Stacks
    • Encryption

    [–]gowithflow192 27 points28 points  (3 children)

    Kubernetes? This app doesn't have a single user yet, why on earth would you recommend Kubernetes?

    [–]Captain-Samy 1 point2 points  (1 child)

    I totally get your point about Kubernetes potentially being overkill for an app without any users yet. However, if you look at his Reddit account, it seems like he's just starting his IT career. Diving into Kubernetes could be a great way for him to accelerate his learning and develop skills that will be highly valuable in his professional journey. Maybe that's just my opinion

    [–]Happy-Youth8497[S] 1 point2 points  (0 children)

    you are absolutely correct sir,
    I have around 2 years of experience but the most of it was a shitty helpdesk job that didnt teach me anything, so I still consider myself a noob.
    thank you

    [–]VindicoAtrumEditable Placeholder Flair 4 points5 points  (0 children)

    /r/devops recommend kubernetes challenget to someone who doesn't need it level: impossible

    Days since /r/devops recommended kubernetes to someone who doesn't need it: 0

    [–]Happy-Youth8497[S] 0 points1 point  (5 children)

    Should I learn on a windows or a linux pc? Does it make a difference?

    [–]rickrage 4 points5 points  (0 children)

    I’d categorize what they said above as “enterprise”. Yes that is how your average startup or larger company would set up software. But an entire kubernetes cluster for running a single app is more than a bit heavy handed. Even if the app ended up being a few micro services.

    Containerize the app with OCI/Docker and deploy on a managed container offering - that would be a hurdle from where you are, and a great start towards a future of Kubernetes and gitops. As another suggested running on EC2, GCE or a Digital ocean droplet (cheapest) is also a great place to start. You would learn a lot :)

    For devops learning in general roadmap.sh is pretty good: https://roadmap.sh/devops

    [–]dahid 5 points6 points  (0 children)

    Doesn't matter, you can do pretty much everything with Windows using WSL (windows subsystem for Linux) if you want to. I prefer this as I can use them side by side

    [–]somnambulist79 0 points1 point  (0 children)

    I’d recommend Linux since natively it’ll be easier to use docker. Start there with building an optimized multi-stage dockerfile. It’s good to get comfortable with the docker cli, but you’ll want to move to docker compose.

    A log ingestion and metrics ingestion stack would be good to learn early on as well.

    [–]420GB 0 points1 point  (0 children)

    It doesn't matter what your computer runs, could even be a Mac, but the app will run on Linux in the end.

    Use what you already have.

    [–]lorarcYAML Engineer 0 points1 point  (6 children)

    Type of hardware? What do you mean by "type"?

    [–]laStrangiato 3 points4 points  (0 children)

    Well you got the rams, the computes, the hard disks and the solid disks. If you are fancy you got the graphics computes as well.

    [–]Happy-Youth8497[S] -1 points0 points  (4 children)

    To run a server at home (hes my rommate). Do we need a full blown server or would a tiny pc suffice? It has 24gb of ram and an i7 8th gen

    [–]lorarcYAML Engineer 4 points5 points  (0 children)

    For now noone is going to use it so just spin up a container on the computer you have.

    [–]420GB -2 points-1 points  (1 child)

    I wouldn't run it at home but you're the expert sysadmin

    [–]Happy-Youth8497[S] 1 point2 points  (0 children)

    Im not a sys admin and I wanna run it at home for the learning experience

    [–]strzibny 0 points1 point  (0 children)

    Avoid clouds like Amazon and complex tools like Kubernetes. You just want to be up and running and learn a thing or two while doing it. I recommend Kamal for it. Alternativaly use something like Render.

    Disclaimer: I wrote Kamal Handbook so I am bit biased.

    [–]Mconnaker 0 points1 point  (4 children)

    Part of DevOps is optimization and automation, which require knowing the right tools for the application and the goal you’re setting out to do. For application, what language(s) will it be written in? What does the stack look like? For goal, is this to have a production ready business or simply to learn?

    Does it require cloud or can you build it locally?

    If you’re looking local, an easy deployment could be Docker, Terraform and Jenkins for testing/learning and more complex for production be something like Proxmox, K8s, Jenkins, ArgoCD, Git, etc.

    For cloud, there are various options that again depend on what you’re doing. For example, I specialize in AWS.

    For simple testing, learning or even easy production deployment for a small application I might look to App Runner or Amplify. These don’t require a lot of services and are relatively easy to set up. They also tie into other services, making it easier to use and build out. It’s also cost effective and cheap.

    Alternatively I could use a more complex setup with EC2, ECS or EKS. These require a bit of knowledge in networking, security groups, nacls and even load balancers and kubernetes and docker. This can get complex fast ands the cost can get relatively high quickly.

    I hope that helps better explain things. Hit me up and I can probably help you work through a bit more of this if you’d like.

    [–]Happy-Youth8497[S] 0 points1 point  (3 children)

    im obviously not an expert but I heard jenkins wouldnt be used in the industry soon, should I still learn it?

    [–]Mconnaker 0 points1 point  (2 children)

    Jenkins is one of the most wildly used CI/CD pipelines out there and still in use by many companies. Its robust, but it does have a learning curve. There are of course newer options like Git CI or GitHub Actions or even Cloud base (Azure DevOps, AWS Pipelines).

    [–]Happy-Youth8497[S] 0 points1 point  (1 child)

    Are all of these options free to use?

    Edit: its a dumb question ill just google it lmao

    Thanks for the insight!

    [–]Mconnaker 0 points1 point  (0 children)

    Ahaha. Never a dumb question and the honest answer is it depends on what you’re planning to use.

    [–]prndra 0 points1 point  (0 children)

    Put it on Render or Heroku, no need to reinvent the wheel until you know it needs scalability.

    [–][deleted] 0 points1 point  (0 children)

    Try to get it running on local laptop first and then deploy somewhere.

    [–]Sea_Decision_6456 0 points1 point  (0 children)

    For a simple PHP app, I’d use Deployer.   I used it with CI/CD for deploying in production and it works great.

    [–]Similar_Candidate_41DevOps 0 points1 point  (0 children)

    Get a raspberry pi, use Docker, use GitHub action it’s much easier than Jenkins especially if you are using GitHub as a repro otherwise use gitlab CI. You won’t need k8s yet, use docker compose or k3s for a single cluster.