Continuous Integration
What does an Infrastructure Engineer Do?

Summarized using AI

What does an Infrastructure Engineer Do?

Toni Rib • June 25, 2024 • online

The video titled "What does an Infrastructure Engineer Do?" features Toni Rib discussing the role of infrastructure engineering within the software development landscape. Toni begins by reflecting on his own journey from coding school to his current role, emphasizing that many people may not fully understand the breadth of work done by infrastructure engineers.

Key Points Discussed:
- Role Definition: Infrastructure engineering encompasses the systems and technologies that support the deployment, management, and maintenance of applications, distinct from frontend and backend development.
- Importance in Growing Companies: As startups grow, the need for dedicated infrastructure teams becomes significant. Systems must be built and packages deployed to ensure functionality in a production environment.
- Deployment Tools: Tools such as Kubernetes and AWS EC2 are crucial in deploying code and managing resources. Additionally, managed databases play a key role in storing customer data.
- Monitoring & Maintenance: Infrastructure engineers must implement monitoring tools to address any production issues promptly and ensure system reliability.
- Learning and Challenges: Constant learning is a hallmark of the infrastructure engineer role, which is filled with new challenges that differ from traditional application development.

- Collaboration with Development Teams: Unlike product developers who aim to create visible features, infrastructure engineers work behind the scenes to optimize systems, ensuring their modifications are seamless to end-users.
- Job Satisfaction: Infrastructure roles typically have less competition and may offer higher salaries due to the specialized skill set required. Engineers can also focus on various specialties within the field.
- Path to Entry: For those with a background primarily in coding, Toni encourages shadowing infrastructure or DevOps engineers to gain insight and experience, which could transition them into an infrastructure role.

Conclusions and Takeaways:
- Infrastructure engineering is a crucial and dynamic role within software development that provides significant learning opportunities and job satisfaction. Aspiring developers are encouraged to explore this career path to broaden their skills and contribute effectively to their teams.

What does an Infrastructure Engineer Do?
Toni Rib • June 25, 2024 • online

Lightning talk by Toni Rib about what an infrastructure engineer does.

https://www.wnb-rb.dev/meetups/2024/06/25

WNB.rb Meetup

00:00:00.040 I'm Tony rib uh I don't really have a
00:00:02.040 catch title for this but when I
00:00:04.160 graduated from a coding school in Denver
00:00:06.399 uh about eight years ago I had no idea
00:00:08.800 what an infrastructure engineer was um
00:00:11.080 so I thought it'd be interesting to talk
00:00:13.080 about sort of a different career path
00:00:14.480 you could take in the software
00:00:16.080 space uh so this is a brief background
00:00:18.240 of what I've done since I graduated
00:00:19.720 touring just to sort of give you an idea
00:00:21.840 of when I actually got into
00:00:23.000 infrastructure engineering um and it's
00:00:25.240 not a talk about me but if you do want
00:00:27.480 to hear about my history at all I have
00:00:29.599 spoken this meet up once before but I
00:00:31.720 did a podcast uh with the coding tool
00:00:34.079 that I went to that has a link there
00:00:35.719 that I can post
00:00:37.200 later so uh historically I feel like we
00:00:40.680 talk a lot about frontend and backend
00:00:42.239 engineering programs which are sort of
00:00:43.640 the biggest buckets of software
00:00:45.199 developers however there's an entire
00:00:47.840 ecosystem that's actually surrounding
00:00:49.600 these two functions that make up the
00:00:51.239 full like cohesive software engineering
00:00:53.239 team and if you work at a small startup
00:00:55.719 that's just deploying to something like
00:00:57.039 Heroku you may not have an
00:00:58.399 infrastructure team but as your company
00:01:00.600 gets bigger it kind of becomes a
00:01:02.160 necessity over time so this isn't an
00:01:05.199 exhaustive list like for all these
00:01:07.159 pieces or even all the pieces that make
00:01:09.280 up a full software development team um
00:01:11.720 but I'm going to focus on the
00:01:12.560 infrastructure part because I found it's
00:01:14.240 a really fun job and one that isn't
00:01:15.799 talked about a
00:01:17.439 done so uh as a product developer which
00:01:20.680 encompasses sort of the back end and
00:01:22.079 front end engineering pieces here uh
00:01:24.759 you've completed your application so now
00:01:26.600 what do you do with it that code has to
00:01:29.119 be built and package in some way so that
00:01:31.040 it can eventually run with all
00:01:32.560 pendencies on a production environment
00:01:35.200 and then because he wrote some excellent
00:01:36.920 tests those need to actually be run
00:01:38.759 somewhere and there's probably some
00:01:40.240 other important checks that you want
00:01:41.640 running like linting and whatnot before
00:01:43.680 you actually want to go deploy this
00:01:45.600 code So speaking of deploy there's a ton
00:01:48.360 of tools out there that you can make
00:01:50.079 sure your code gets to the right place
00:01:51.840 on time and where is that right place uh
00:01:54.920 kubernetes is obviously the big sort of
00:01:56.960 thing these days and there's an entire
00:01:58.840 ecosystem of things just related to
00:02:00.759 kubernetes but you might be doing
00:02:02.680 something as simple as just running it
00:02:04.560 on a static ec2 instance in
00:02:07.640 AWS uh and once your code's deployed you
00:02:10.119 have to actually store your customer's
00:02:11.560 data somewhere so you're likely looking
00:02:13.120 at some type of managed database
00:02:14.840 solution in order to handle that and
00:02:17.760 there's a whole bunch of other things
00:02:18.920 that are actually involved in running
00:02:20.480 your application uh if you need to do
00:02:23.040 something like generate invoices for
00:02:24.599 your customers and have PDFs that need
00:02:26.280 to upload and download you might need
00:02:27.640 something like S3 for that need routing
00:02:29.959 to figure out how one part of your
00:02:31.319 application is going to talk to a
00:02:32.519 different part of your application you
00:02:34.160 might need something like terraform so
00:02:35.760 that you can have all your
00:02:36.920 infrastructure actually L this code
00:02:38.480 somewhere just like your application
00:02:39.720 code
00:02:41.480 does uh so at some point too you are
00:02:45.159 going to mess up production it happens
00:02:47.519 to all of us it's almost right a passage
00:02:49.440 as a developer uh so you better have
00:02:51.680 some monitoring Tools in place and some
00:02:53.879 way to page the people who are on call
00:02:55.800 so that they can come fix it in the
00:02:57.280 middle of the night here so if you
00:03:00.040 haven't guessed it already that all of
00:03:02.680 that is infrastructure engineering um
00:03:05.680 it's a ton of stuff and there's a lot of
00:03:07.400 different system that you need to learn
00:03:09.080 about and way less documentation that
00:03:11.319 you're going to find about uh if you
00:03:13.440 Google like a ruby or JavaScript problem
00:03:16.640 and also we end out having to get in the
00:03:18.840 application code most of the time to
00:03:20.680 make small changes here and there for
00:03:22.159 things so you kind of have to do that
00:03:23.560 part
00:03:24.599 too so even though this is a whole lot
00:03:27.400 of things you have to learn uh there is
00:03:29.519 something scarier flash a little more
00:03:31.720 fun in my opinion too that not only do
00:03:33.879 you have access to all of these systems
00:03:36.080 that other developers may not actually
00:03:37.760 have access to you have full admin
00:03:40.400 access to them which I think of as God
00:03:43.159 mode uh if I wanted to drop tables on
00:03:46.640 Productions or delete our entire
00:03:48.519 production deployment with one command I
00:03:50.400 could go do that at my work right now um
00:03:53.760 so it's a little scary but also like I
00:03:55.799 get to play around deeply in our systems
00:03:57.959 in ways that most other developers are
00:04:00.040 not even allowed to for security reasons
00:04:02.720 so it's kind of cool to actually like
00:04:04.560 have that thrust from your engineering
00:04:06.000 team that yes you can go do anything but
00:04:08.000 obviously you're not going to go do all
00:04:09.519 the bad things um which brings me to
00:04:12.040 another big difference between being an
00:04:13.879 infrastructure engineer and a product
00:04:15.959 developer uh which is well your job as a
00:04:18.840 product developer is to make a product
00:04:20.440 that customers love and want to use and
00:04:22.759 they're super happy that youve release
00:04:24.120 this new feature to them my job is
00:04:26.440 generally to modify the underlying
00:04:28.440 systems in such a way that nobody
00:04:30.440 actually notices I did anything at all
00:04:32.919 um so it is a lot of upgrades and like
00:04:35.000 re architectures and fullscale migrating
00:04:37.479 applications from one system to another
00:04:39.560 databases from one place to another and
00:04:42.120 the last thing that I actually want to
00:04:43.440 do is cause downtime or drop critical
00:04:46.000 data for
00:04:47.360 anyone so why do you want this big kind
00:04:50.560 of scary job where you have to learn a
00:04:52.320 whole bunch of different things uh if
00:04:54.919 you like learning this is a great job to
00:04:57.120 be in it's basically always full of
00:04:59.120 challenges and you're always learning
00:05:01.039 something new so if you're bored of
00:05:03.240 writing your like 50th rails controller
00:05:05.680 or react container this might be a good
00:05:07.880 thing to consider secondly your
00:05:10.280 customers are your fellow developers at
00:05:12.000 your company so if you like those people
00:05:14.479 you basically have a job that's making
00:05:16.240 their lives easier on a day-to-day
00:05:19.240 basis also kind of a special py job uh
00:05:22.600 there are less people who want to do it
00:05:24.639 which means you're also competing with
00:05:26.080 less people for this job which also
00:05:27.720 means you generally get paid higher than
00:05:30.440 other development jobs because it's
00:05:31.720 harder for them to find
00:05:33.560 people and even though that's like a
00:05:36.440 giant list of things that I work on as
00:05:38.280 an infrastructure engineer you do still
00:05:40.319 get to pick your faculty right like
00:05:42.160 nobody I've met that's working this job
00:05:44.160 is amazing at every single thing that's
00:05:45.880 on that list uh people sort of naturally
00:05:49.000 gravitate to certain things and when you
00:05:50.440 put an infrastructure team together the
00:05:52.039 managers are often trying to pick people
00:05:53.880 of various Specialties to all kind of
00:05:55.720 work together so uh as I got introdu as
00:05:59.280 mind are kind of like database
00:06:00.600 performance kubernetes and honestly
00:06:02.479 observability as a thing uh I personally
00:06:04.960 suck at networking but that's okay
00:06:07.240 because other people on my team are good
00:06:09.000 at it and I can just go to them when I'm
00:06:10.840 inevitably stuck on
00:06:12.919 something so how do you get into
00:06:15.639 infrastructure engineering if all you've
00:06:17.240 been taught is Ruby or Java or
00:06:19.080 JavaScript or some other language um
00:06:22.120 just go befriend your infra or devops
00:06:24.759 Engineers ask them if next time there's
00:06:27.319 an outage that you can go Shadow them or
00:06:29.800 just ask them if you can Shadow them on
00:06:31.720 a random day and just sort of see what
00:06:33.639 it is that they work on um I ended out
00:06:36.319 getting into it because I did a rotation
00:06:38.080 onto the team and just never went back
00:06:39.919 so that can be a possibility sometimes
00:06:41.880 too uh but I it's always good to just go
00:06:44.880 get involved and sort of see what's
00:06:46.360 going on with your application outside
00:06:48.240 of the normal code that you're writing
00:06:50.199 on a day-to-day basis so I can leave you
00:06:52.800 with one thing it's that in for
00:06:54.360 engineering is awesome and everybody
00:06:56.240 should try a little bit and that's it
00:06:58.720 that's the whole talk
Explore all talks recorded at WNB.rb Meetup
+20