Skip to main content

Command Palette

Search for a command to run...

연말회고 1편

Published
5 min read
연말회고 1편

2024년 연말회고 1편

들어가며
연말기념 처음 써보는 회고록, 올해 한 해 어떤 일을 했는지 정리 해보려 합니다.

회사 일

1월

이직 한 회사에서 인프라와 백엔드를 맡게 되어 기존 코드 분석과 인프라 비용에 대해 전체적으로 점검을 하였습니다.

인프라 비용 분석을 위해 다음과 같은 작업들을 진행했습니다:
1. AWS 리소스 현황 파악 - EC2, RDS, ECS 등 각 서비스별 사용량 분석 - CloudWatch 메트릭을 통한 실제 리소스 사용률 확인 - 불필요하게 실행 중인 서비스 및 인스턴스 식별
2. 유저 통계 분석 - 23년도 월별 전체 유저 수 추이 확인 - MAU(Monthly Active Users) 및 DAU(Daily Active Users) 데이터 수집 - 시간대별 서비스 사용 패턴 분석 - 피크 시간대 vs 저활동 시간대 리소스 사용량 비교
3. 도커 컨테이너 현황 분석 - 실행 중인 컨테이너들의 리소스 사용률 모니터링 - EC2 인스턴스 대비 컨테이너 배포 현황 확인 - 컨테이너 로그 분석을 통한 메모리 누수 및 성능 이슈 파악
특히 도커 환경에서 EC2 자원이 비효율적으로 사용되고 있는 점이 눈에 띄었습니다. 예를 들어, 8GB 메모리의 인스턴스에서 실제로는 3-4GB만 사용되고 있었고, CPU 사용률도 평균 30% 미만을 유지하고 있었습니다.
이러한 분석을 바탕으로 2월부터 실행할 비용 절감 계획을 수립했습니다:- 단기적으로는 과다 책정된 리소스 스펙 조정- 중기적으로는 컨테이너 운영 방식 개선- 장기적으로는 서버리스 아키텍처 도입 검토
1월은 주로 현황 파악과 계획 수립에 집중했으며, 모든 변경 사항은 서비스 안정성에 영향이 없도록 충분한 검토 과정을 거쳤습니다.

2월

1월에 세운 계획을 본격적으로 행동으로 옮겨서 기존 운영비용에서 500$ 절감을 달성하였습니다. 많은 절감은 아니지만 한달에 70만원 가량을 절약 할 수 있어 기분은 좋았습니다. 해당 내용은 별도의 글로 작성을 진행해볼 예정입니다.

조금 짧게 내용을 적어보면 아래의 과정을 거쳐서 작성 했습니다.

비용 절감을 위해 다음과 같은 작업들을 진행했습니다:
1. EC2 인스턴스 최적화 - 리소스 모니터링을 통해 과다 책정된 인스턴스 스펙 조정 - ec2 티어 다운그레이드 (실제 CPU 사용률 20% 미만) - 예약 인스턴스 구매로 온디맨드 대비 30% 비용 절감
2. 컨테이너 최적화 - 도커 이미지 경량화 (multi-stage build 도입) - 컨테이너 리소스 제한 설정 재조정 - ECS Fargate 활용으로 유휴 EC2 자원 제거
3. 오토스케일링 정책 개선 - 피크 시간대 분석을 통한 스케일링 임계값 조정 - 예측 가능한 트래픽 패턴에 맞춘 예약 스케일링 설정 - 불필요한 스케일 아웃 방지를 위한 쿨다운 기간 조정
특히 Fargate 도입이 가장 큰 효과를 보았는데, 기존에는 EC2를 24시간 운영하면서 발생하던 유휴 비용을 크게 줄일 수 있었습니다. 컨테이너가 실행될 때만 비용이 발생하는 구조로 전환하여 야간 시간대의 불필요한 리소스 낭비를 막을 수 있었습니다.

3월

3월에는 회사내의 개발 서버의 부재로 인해 FreeOS의 데스크톱을 구매하여 네트워크 작업과 OpenVPN을 통해 개발 서버를 구축하였습니다.

진행하면서 생각보다 난관이 여러가지가 있었습니다. 특히 Ubuntu를 설치하는데 계속

```bash

[ 3.485147] xhci_hcd 000:23:00.0: init 0000:23:00.0 fail, -16

```

해당 에러가 지속적으로 발생하여 3일동안 애를 먹었습니다.

처음에는 단순히 USB 포트 불량인가 싶어 다른 포트로 옮겨가며 시도해봤지만 동일한 에러가 발생했습니다. 구글링을 통해 찾아보니 xhci_hcd는 USB 3.0 컨트롤러 드라이버와 관련된 문제라는 것을 알게 되었고, 다음과 같은 시도들을 해보았습니다:
1. BIOS에서 xHCI 설정을 비활성화2. 커널 부팅 파라미터에 'xhci_hcd.enable=0' 추가3. 드라이버 모듈 언바인드/바인드 시도```bashecho -n "0000:23:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbindecho -n "0000:23:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind```
하지만 위의 시도들은 모두 실패했고, 심지어 하드웨어 문제일까봐 컴퓨터 반품까지 고려했었습니다. 그러다 우연히 USB 2.0 포트로 설치 미디어를 옮겨보았는데, 놀랍게도 문제없이 설치가 진행되었습니다.
결과적으로는 간단한 해결책이었지만, 이 과정에서 리눅스 시스템의 USB 드라이버 구조와 xHCI(eXtensible Host Controller Interface)에 대해 공부할 수 있는 좋은 기회였습니다. 특히 하드웨어 문제인줄 알았던 것이 단순히 드라이버 호환성 문제였다는 점이 인상깊었습니다.
어쨋든 해결을 통해 사내에서 쓸 수있는 개발서버를 만들어서 각각의 프로필(VPN)인증서를 발급하여 팀원들에게 분배 하였습니다.

4월,5월,6월

신규 프로젝트에 들어가게 되어서 3개월 내로 기능들이 오픈되어야 하기 때문에 별도의 기록 및 회고를 남길 시간이 없었습니다. 업무 관련 트러블 슈팅 및 해당 내용에 대해 작성을 하고 싶었으나 아침에 출근해서 저녁 10시 이후에 퇴근을 하다 보니 해당 부분을 정리 못한 점이 너무 후회가 되고 있습니다.기억나는거는 결제 도메인 관련이다보니 정산 파트 부분에 대해 기록을 남기지 못한것이 천추의 한이 되고 있습니다.

개인 일

1월

게으른 개발자 컨퍼런스에 참여 하였습니다.
설마 내가 당첨 되겠어? 하면서 넣어본 컨퍼런스인데 당첨이 되어서 엄청 기분이 좋았습니다.
해당 컨퍼런스에서 가장 좋았던 세션은 JPA Patterns와 분산트랜잭션: 과거와 현재 였습니다.
JPA, Hibernate등 ORM 기술에서 사용한 패턴들에 대해서 설명을 하셨는데 JPA 에 대해 사용해보고 학습한 경험이 있어 강연에 더더욱 몰입 할 수 있었습니다.
분산 트랜잭션 파트의 경우 아직까지 경험을 해보거나 고민을 해본 경험이 없어 더 관심이 가서 듣게 되었습니다.

2월

백 스쿼트 1RM을 갱신 할려다가 발목 부상을 당했습니다. (머든지 무게는 적당히 해야합니다...)
일어서다가 균형을 잃고 넘어졌는데 처음엔 쪽팔려서 일어나지도 못했습니다. 친절한(?) 친구놈 덕에 병원을 가니 뼈에는 다행이 이상이 없는데 MRI를 찍어봐야 할거 같다고 입원을 하게 되었습니다.
검사 결과 발목인대염좌 수준이라 당일 퇴원과 동시에 하체는 더이상 안했습니다 (의사선생님 죄송합니다.)

3월,4월,5월,6월

기술사 공부를 시작 하였습니다.

기술노트알렉(유투버)님이 올리신 유튜브를 보며 기술사라는 과목에 대해 흥미가 생겨 알아보고 있었는데, 학원은 죄다 서울에 있어 우선은 인터넷 강의 (기간제)를 구매하여 보고 있습니다. 처음엔 주말 포함해서 하루에 2시간 정도 들으면 금방 다 듣겠지 하며 시작 하였는데 생각보다 정리를 하며 듣는 과정에서 놓치는 부분도 많아 정리는 추후에 별도로 진행하며 우선 1회차 정독을 진행하였습니다. 특히 최신트렌드 강의를 다듣고 나니 강사님이 하신 말씀이 아직도 머리에서 잊혀지지가 않습니다. “ 여러분 제가 말하는 강의는 5%밖에 안됩니다. 다른거 더 찾아보셔야 합니다 “ (9시간 강의 가 끝난후) 처음엔 정말 무슨 끝도 없이 해야하는지 아무런 생각도 나지 않았다.

추가적으로 기술사는 빈 종이 위에 해당 내용에 대해 교수님,먼저 합격 한 기술사 분들을 설득하는 내용을 작성해야하는것으로 들었다. 과연 나의 글쓰기 능력으로 그분들을 설득할 수 있는 글을 적을 수 있을까? 라는 고민이 되기 시작했다.(책 하나를 추천 받았습니다 - 개발자를 위한 생각의 정리, 문서 작성법)

개인적인 일이 거이 없고 오로지 회사에만 묶여 있었던거 같습니다. 부상을 당한 후에는 운동도 거이 못하고 오로지 회사 업무만 한다고 시간을 다 보낸거 같습니다.집->회사->집 너무 단순한 구조라 특별한 이벤트도 없었으며 회사 업무 때문에 오랜만에 친구들과 만나는 일도 없었습니다.(근데 청첩장은 주더라 망할놈들)

1편 마무리

막상 적으면서 보니 회사 일에 너무 매몰되어 상반기를 보낸거 같습니다. 조금더 저를 챙기는 시간을 가졌어야 했던거 같은데 오로지 회사 업무만 바라본 상반기가 아니였나 하는 생각이 듭니다.

돌이켜보면 업무에서 많은 성장을 이뤘지만, 개인적인 삶의 균형은 많이 부족했던 것 같습니다. 특히 건강 관리나 자기 계발에 더 신경 썼어야 했는데, 이 부분이 아쉽게 느껴집니다.

상반기 동안 이룬 주요 업무 성과들을 정리해보면:
- 인프라 비용 최적화로 월 500$ 절감 달성

- 사내 개발 서버 구축으로 개발 환경 개선

- 결제/정산 시스템 개발
하지만 이 과정에서 놓친 것들도 많았습니다:

- 문서화와 지식 공유가 부족했던 점- 업무 외 자기 계발 시간 확보 실패- 일과 삶의 균형이 무너진 점
하반기에는 이런 반성을 토대로 일과 삶의 균형을 좀 더 잘 맞추려고 노력했는데요.
2편에서는 7월부터 12월까지의 이야기를 들려드리려고 합니다. 특히 기술사 공부를 본격적으로 시작하게 된 계기와 , 구조조정, 새로운 회사 이직, 대외활동(글또) 등등

More from this blog

Clean Code

우리는 평균적으로 코드를 작성하는 시간보다 코드를 읽고 해석하는데 많은 시간을 소비한다. 하물며, 자기 자신이 짠 소스 코드도 많은 분석시간이 필요하다. 그렇기 때문에 우리는 미래의 나를 믿지 말고 미래의 나까지도 쉽게 이해 시킬 수 있는 깨끗한 코드를 작성해야 한다. 그렇다면 깨끗한 코드는 무엇일까? 바로 "읽기가 쉬운 코드" 이다. 의미 있는 이름 소프트웨어에서 이름은 어디서나 쓰인다. 하지만 주의 깊게 이름을 붙이지 않는다. 우리는 변수에...

Mar 16, 202515 min read

어려운 Next15

Next15가 출시한 뒤 프로젝트에 도입하며 이게 과연 프레임워크로써 가치가 있는지 혹은 아니면 사용 할 수 밖에 없는 계륵같은 존재인가? 라는 생각을 많이 하였습니다.보안에 좋지만 사용하기는 매우 어려웠는데 프로젝트에 도입하며 발생 했던 문제점 혹은 사용하기 어려웠던 점을 정리하려고 합니다. 1. 서버 next서버 에서 백엔드로 api를 호출 하는 방법에는 3 가지가 있습니다. (제가 알고 있는 방식에는) 첫 번째로 서버 액션 두 번째로 서버...

Mar 2, 20256 min read

Kotlin & springboot

Spring java to Kotlin 코틀린이란? 코틀린( Kotlin )은 2011년 7월 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 자바코드와의 상호운용성( interoperability )를 중시한 언어이다. 주요 특성 코틀린의 주목적은 현재 자바가 사용되고 있는 대부분의 곳에 변환이 가능하며 간결하고, NullSafe하게 코드 작성을 가능하게 만들어 준다. 자바 에서 코틀린으로 변경...

Feb 16, 20256 min read

[글또] 알고리즘 연습 사이트

3년 차 개발자의 알고리즘 도전기 어느덧 시간이 흘러 백엔드 개발자로 3년 차를 맞이하게 되었습니다. 처음 개발 공부를 시작할 때는 '연차가 쌓이면 알고리즘 문제 정도는 쉽게 해결하겠지?'라는 막연한 기대를 했지만, 실제로 알고리즘 문제를 접하면 여전히 쉽게 손이 가지 않고 겁부터 나는 것이 사실입니다. 최근 참여 중인 개발자 글쓰기 커뮤니티 글또에서 코드트리(CodeTree)와 함께하는 알고리즘 학습 이벤트를 발견했습니다. 프로그래머스와 Le...

Feb 2, 20253 min read

프론트 찍먹해보기 (모노레포)

Monorepo - 하나의 Git 저장소 에서 여러개의 프로젝트를 관리하는 방식을 모노레포라고 한다. - 모노레포는 프론트, 백 모두 사용가능하다. 프로젝트 구성의 발전 모놀리식 애플리케이션 모놀리식 애플리케이션은 모듈화 없이 모든 구성 요소가 한 프로젝트 안에 통합된 소프트웨어 애플리케이션을 이야기합니다. DB 커넥션을 맺고, 데이터를 요청하며, 화면을 그리는 로직이 한 프로젝트 안에 구현된 초기 웹 서비스를 모놀리식 애플리션으로 볼 수 있...

Jan 5, 20255 min read

val's log

10 posts