오늘도 한 뼘 더
[회고] 더 늦기 전에 적어보는 2022년 회고록 본문
# 2022년 내가 했던 일들
내가 2022년 한 해동안 했던 일들을 되돌아보면서 회고하는 것이 좋을 것 같다.
## 개발환경(Develop) Docker로 변경하기
이 작업을 했을 때 당시 우리는 모든 서비스를 AWS Elastic Beanstalk을 이용하여 배포하였다.
간편했지만, Elastic Beanstalk의 경우 배포를 하면 EC2 서버가 환경 설정에 따라서 한대 이상이 올라간다.
Develop 환경의 경우 개발자만 사용을 하고 있는 환경이기에 EC2 서버 몇 대를 써야 할 이유가 없었다.
서버가 너무 놀고 있는데 비용은 계속 나왔기 때문에 개발환경을 Docker Container로 변경하는 작업을 진행했다.
Docker로 전환하면서 local에서 되던 것들이 안 되는 일도 발생했다.
Dockerfile에 파일이 없어 찾을 수 없다던지 등에 대한 문제였다. 처음 변경할 때보다 변경한 후에 운영을 하면서 오히려 더 많은 것을 알게 되었고 운영을 하다 보니 아직 더 많은 것을 알아야겠다는 생각도 더 들었다.
## IAM 사용자를 생성하여 AWS에 대한 권한을 제한한다.
초기에 업무를 진행할 때에 AWS를 사용하는 개발자가 나를 제외하고는 거의 없었던 상황이라 누가 AWS를 어떻게 사용하는지에 대한 정보를 알고 있을 필요가 없었다.
그래서 IAM 사용자로 권한을 제한한다는 필요성을 거의 느끼지 못하였다.
올해 들어서 백엔드 개발자들이 AWS Lambda를 사용하고 비동기 프로그래밍을 진행하면서 AWS 서비스에 대한 접근이 필요해짐에 따라서 IAM 사용자를 생성하여 각각 부여하고 AWS 권한을 제한하는 작업을 진행하였다.
처음에는 권한을 어디까지 줘야 하는지에 대한 의문이 생겼다. 권한이 필요하다는 대로 다 부여하면 되는 것이 맞는지가 궁금하였다. Cloud Trail을 통해서 사용자 별 이벤트 기록을 확인할 수 있음을 알게 되었고 그렇다면 일단은 필요한 권한을 부여하는 것이 맞다고 판단하였다.
## 사설 Docker Registry를 생성한다.
CI/CD서버에 dev 서버의 docker 컨테이너가 같이 올라가 있는 상황에서 jenkins에서 문제가 생기거나 npm install을 하다가 속도가 느려지면 이 문제가 docker에 영향을 미치는 경우가 발생했다.
그래서 Dev 서버와 CI/CD 서버를 나누게 되었는데 나누는 과정에서 Docker image를 불러오는 작업이 필요하다 보니 사설 Docker Registry를 생성하게 되었다. 진행하다가 막히기도 하고 찾아본 대로 해도 제대로 동작되지 않는 부분도 많고 어려웠지만 결국은 해냈다.
이렇게 하나씩 해낼 때마다 조금은 뿌듯한 감정이 드는 것 같다!
## 부하테스트를 통해 서버가 죽는 문제를 해결한다.
작년 어느 시기부터 갑자기 서버가 돌다가 다운되는 문제가 발생했다.
개발계에서만 나타나는 현상이었다면 그래도 덜 큰 문제였겠지만, 운영 환경에서도 해당 문제가 발생하는 일이 있어 이 문제의 원인 및 해결 방법을 찾으려고 했다.
처음에는 부하의 문제라고 판단했다. 그러다가 부하테스트 툴을 알게 되었고, 부하테스트 툴인 Jmeter를 사용하여서 서비스에 부하를 주면서 실제로 부하의 문제인지에 대해 원인 파악을 진행하였다.
결과론적으로는 부하의 문제는 아니었다. 로그 관련 DB를 새로 연결하는 부분에서 DB에 대한 커넥션이 제대로 끝맺음되지 않아서 connection pool이 초과되는 문제인 코드 문제인 것으로 파악하고 코드 수정을 진행하였다.
계속해서 서버가 끊기는 현상을 해결할 수 있어서 기쁘고 뿌듯했다. 아무래도 DevOps로 일을 하다 보니 서버가 끊기는 것에 대한 스트레스도 크고 부담도 많이 되었는데 직접 해결할 수 있어서 좋은 경험을 한 것 같다.
## 물품 나눔 플랫폼 기관, 기관담당자 관련 API 및 어드민 화면을 만든다.
회사가 비영리 기관이다 보니 나눔 관련 서비스를 진행한다. 이전에는 없었던 현물 나눔을 진행하는 플랫폼을 기존의 플랫폼에 붙여야 했다.
이 부분에서 나는 기관, 기관 담당자 관련 API와 어드민 화면을 만들었다.
이 파트를 맡게 된 것은 처음에 다른 파트 보다 DevOps를 하면서 같이 진행하기에 부담이 없을 것이라고 생각해서 맡게 되었는데, 생각보다 기관 가입을 비롯하여 기존에 있던 기관들 정보들 그리고 담당자까지 관리해야 하고 경우의 수가 많아서 생각해야 할 것들이 많았다.
그리고 테스트를 진행하면서 조금씩 수정할 부분들이 나오고 사실상 거의 제일 큰 부분이었다.
그래도 덕분에 로직을 어떻게 이해하고 API를 구성해야 하는지에 대한 이해도가 올라갈 수 있었던 작업이었다.
## Slow Query를 모니터링한다.
이전에 부하테스트를 진행하면서 DB 속도가 느려지는 원인에 대해서 몇 가지 이야기를 하다가 Slow Query에 대한 이야기를 한 적이 있었다. 그동안 Query를 작성하면서 Slow Query에 대한 생각을 한 적이 없었던 것 같다.
Query 속도를 개선해 보기 위해서 Slow Query에 대한 모니터링을 진행하고 index를 설정하면서 query 개선 작업을 진행하였다.
처음 Slow Query를 조회했을 때 보다 최근의 Slow Query 숫자는 많이 줄어들었다.
앞으로 Query Plan 등을 좀 더 학습하고 쌓이는 Slow Query 내역들에 대한 개선을 어떻게 해야 할지 생각해 볼 시기인 것 같다.
## 개발환경(Staging)중 중요도가 낮은 서비스를 EKS로 변경한다.
이전에 개발 환경 모두 ElasticBeanstalk으로 올라가 있었고 그 환경을 Dev의 경우 Docker로 변환하는 작업을 진행하였다.
Dev, Staging, Prod의 환경을 동일하게 만드는 것이 테스트 정확도도 올리고 편하다는 말을 들은 적이 있다. 정확도는 이해했지만, 편하다는 것은 사실 크게 와닿지 않았다.
하지만 점점 service들이 늘어나고 기능들이 추가되면서 환경 구성이 같은 것이 왜 중요한지 알게 되었다.
그래서 dev를 docker로 변경하고 이후 staging을 eks로 변경하는 작업을 진행하였는데, 쿠버네티스를 처음 다루다 보니 staging에서도 일단은 중요도가 낮은 서비스들부터 올리게 되었다.
cluster를 생성하고 안에 리소스들을 만들고 이후 운영을 진행하면서 아직 더 많은 개념을 공부해야겠다는 생각을 하게 되었다. 2023년에는 eks에 대한 모니터링 서비스도 갖춰서 운영을 더 안정적으로 만들어야겠다는 생각을 하게 되었다.
# 2022년 되돌아보기
2022년은 나에게 방황과 기복의 해였던 것 같다.
내가 DevOps라는 직무를 자의 반 타의 반으로 선택하고 2021년은 열심히 하고 내가 같은 연차치고 많은 걸 할 수 있다고 생각했지만, 2022년 몇 번의 면접을 통해 아직 운영 경험이 부족하다는 사실을 깨달았다.
그러면서 자신감도 많이 잃었고 회사에 계속 남아있는 것이 맞는가라는 생각부터 직무에 대한 고민까지 많은 고민을 하다가 다시 괜찮아졌다가를 반복하는 해였던 것 같다.
2023년 처음으로 DevOps 리딩을 해주실 분과 함께 일하게 되었다. 이전까지 DevOps로 일을 하고 있지만, 따로 리딩을 해주시는 분이 없다 보니 스스로 한계를 느꼈던 적이 많았다.
같이 일하게 된 만큼 좀 더 성장하는 2023년을 보내고 싶다는 생각을 하게 되었다.
2022년 방황의 시기에서 열심히 버텼으니 2023년은 덜 방황하고 성장하는 한 해가 되자!
'개발성장기 > 회고록' 카테고리의 다른 글
[회고] 면접 회고 - DevOps (2) | 2022.11.30 |
---|---|
[회고] 회의하다가 문득 쓰게 된 회고록(DevOps 개발자로 일하면서) (0) | 2022.09.22 |
[면접기록] 첫 경력직 면접회고 (0) | 2022.05.22 |
[성장 기록] 신입 개발자로서의 1년을 마무리하며(회고) (4) | 2021.12.31 |