What I Learn Today

Start Date : 2022/02/07 ~

Learn/Company

[TIL #32] 2022 My Report - 업무편

HannaDev 2023. 2. 13. 03:15

▶ 목차

[1] 2022 -> 2023
[2] 2022 주요 업무 키워드 - 사용자 기반 서비스 / 서버 이슈
[3] 업무 방식 - 업무 노트 및 일정 관리
[4] 의사소통 - QA 티켓 분포도
[5] 독서 - 클린코드 (리팩토링)
[6] 2022 세부 타임라인 + 총평


▶ 2022 -> 2023

다사다난했던 2022년... 12개월 간의 업무 타임라인을 정리해보며 2022 업무 분석해보는 시간을 갖고자 합니다 :)

더보기

[2022 리뷰]

 

드디어 12개월을 채우고 백엔드 개발자 2년차가 되었습니다 \\\(۶•̀ᴗ•́)۶////

이제는 업무에 들어가는 것이 두렵지 않게 되었어요!

업무도 많고 이슈도 많았던 한 해였지만 그래도 재미있게 개발자 1년을 보낸 것 같습니다 ㅎㅎ

입사할 당시에만 해도 1년이 지나면 반복 업무처럼 쉽게 처리할 수 있는 업무들이 많아지지 않을까 상상했는데... 점점 난이도 높아지는 업무에 경이로움을 느낀 한 해였습니다. 그래도 하나씩 어떻게든 해가는 재미가 있었던 것 같아요.


▶ 2022 주요 업무 키워드

# 사용자 기반 서비스

진행한 주요 프로젝트는 총 3개 (시리즈, 웹소설, 챌린지)

: 한 줄 감상평 1. '서비스 요구사항... 알고리즘 문제'
: 한 줄 감상평 2. '열정도 과하면 독이 된다' (일감이 2배...!)

: 깨달음 1. 기획자와 친해지자
: 깨달음 2. 중복코드 지옥 - 클린코드와 친해지자


# 서버 이슈

가장 빈도수가 높았던 서버 이슈는 RDB CPU 80-90% -> Server Down

: 22년 10월 DB Scale-Up 을 통해 현재는 어느정도 안정화 되었습니다.

대응 매뉴얼

1. 배포 이후 발생했다면 롤백부터 합니다. 원인 파악도 중요하지만 즉각 대응이 우선됩니다.
2. 빠르게 원인을 파악할 수 없다면 kill 명령어를 통해 일단 임시 조치를 취합니다. 활용 가능한 명령어는 아래와 같습니다.
    ㄴ 최후의 방법으로는 RDB 재부팅이 있지만 권장되지 않습니다...
3. 다음을 확인하여 원인을 조사합니다.
  - CloudWatch Dashboard : 평상 시와 다른 그래프 양상을 확인합니다. (이를 위해 평상 시 지속적인 모니터링이 필요합니다.)
  - ELK 를 통한 에러 분석 : 어디서 어떤 에러가 발생하고 있는지 파악합니다. (구분 없이 503 TIMEOUT 에러 발생 등...)
  - AWS RDS 의 '성능 개선 도우미' 를 활용하여 모니터링 지표 및 느린 쿼리들을 확인합니다. (쿼리가 아닌 RDB 자체에 의심이 간다면 인스턴스 내 모니터링 부분의 지표들을 확인합니다.)
  - Elastic Beanstalk 의 '상태', '모니터링' 페이지를 활용하여 전반적인 지표를 확인합니다.
  - 최근에 나간 배포 이력실행 중인 배치들을 확인하여 추론합니다. 관련된 부분이 없다면 인프라 문제일 수 있습니다.
  - RabbitMQ 등 추가적으로 구성한 부분이 있다면 해당 부분도 모니터링합니다.
4. 2~3 을 반복합니다. 필요하다면 역할을 분담하여 A 그룹이 kill 하는 동안 B 그룹이 원인을 조사하는 방식을 취할 수 있습니다.
5. 추후 장애 리뷰를 위해 중간중간 스크린샷과 함께 진행 상황을 기록해두면 도움이 됩니다. 확실치 않더라도 의심되는 부분이 있으면 slack 또는 구두를 통해 공유합니다.
6. 서버가 정상적으로 돌아왔더라도 원인을 파악하지 못했다면 또다시 이슈가 발생할 수 있으니 추적합니다. (이를 위해 평상시에 꾸준한 모니터링이 필요합니다. 평소와 그래프가 달라지는 부분이 발생한다면 이슈를 추적하세요.)

# 실행중인 쿼리 출력
select *
from information_schema.PROCESSLIST
order by time desc;

# 300 초 이상 대기중인 프로세스들을 출력하는 쿼리
select * from information_schema.processlist
where (COMMAND = 'sleep' or COMMAND='query') and time > 300 ORDER BY TIME desc;

# 300 초 이상 대기중인 프로세스들을 kill 하는 쿼리를 출력하는 쿼리
select concat('KILL ',id,';') from information_schema.processlist
where (COMMAND = 'sleep' or COMMAND='query') and time > 300 ORDER BY TIME desc;

▶ 업무 방식 - 업무 노트 및 일정 관리

# 업무 노트

총 13권 사용 + 스케치북 0.5권
: 가장 많이 활용한 테마 '로직 설계', '요구사항 분석'

: 한 줄 감상평 1. '요구사항 분석을 잘해야 추후 대공사를 예방할 수 있다 (...)'
: 한 줄 감상평 2. '복잡한 요구사항은 반드시 실제 구현 전에 Flow Chart 를 그려보자'

로직 설계 초안 (실제 구현 모습과는 상이)

# 일정 관리

Planning Poker 방식 활용

: Paper -> Google Spread Sheet 로 일정 산정 도구 업그레이드
: (new) 일정 산정 비용 <-> 실제 개발 비용 간의 차이 기록

: 한줄 감상평 1. '처음 생각한 일정의 1.5 ~ 2배를 곱하자'
: 한줄 감상평 2. '실제 소요 시간을 기록해야 다음에 일정 산정을 할 수 있다'


▶ 의사소통 - QA 티켓 분포도

# 기획 관련 QA 티켓 비율 75% 감소 -> QA 기간 감축

기획 관련 QA 티켓 비율 -> 69% -> 57% -> 18%  (빠른 처리가 불가능한 부분)
단순 구현 miss -> 31% -> 43% -> 81%  (빠르게 처리 가능한 부분)

: 한 줄 감상평 1. '요구사항 분석을 잘해야 추후 대공사를 예방할 수 있다 222 (...)'
: 한 줄 감상평 2. '단계 별로 기획자님과 조율에 들어가자'
  ㄴ [기획 회의 단계] 구현 가능 여부 빠르게 판단 -> 스팩 조율 (가장 중요 ★★)
  ㄴ [기획서 검토 단계] 사용자 시뮬레이션에 따른 사용자 관점에서의 피드백
  ㄴ [설계 단계] 개발 비용 및 서버 성능 면에서의 스팩 조율
  ㄴ [구현 단계] 세부 운영 규칙과 같은 운영 관점에서의 규칙 조율
  ㄴ [개발자 테스트 단계] 앱 테스트를 통한 사용자 관점에서의 피드백
: 한 줄 감상평 3. '기획 의도만 부합하면 어느정도 조율의 여지는 있다. 의도를 파악하자.'

 

# 웹소설 QA 티켓 분포도 (22년 6월, 9월 기준)

기획 관련 QA 티켓 비율 -> 69% -> 57%

단순 구현 miss -> 31% -> 43% 

 

# 챌린지 QA 티켓 분포도 (23년 1월 기준)

기획 관련 QA 티켓 비율 -> 18%

단순 구현 miss -> 81% 

: 확실히 기획 관련 QA 티켓이 줄어들고 단순 구현 miss 의 비중이 높아지며 빠르게 처리 가능한 QA 티켓의 비율이 높아졌다.


▶ 독서 - 클린 코드 (리팩토링)

# 챌린지 코드 리팩토링

매달 새로운 챌린지가 추가된다는 요구사항에 대응하기 위한 리팩토링 작업 진행
: [1] 클래스 분리 작업 (ChallengeEvent, Challenge 2개의 클래스로 분리)
: [2] 테스트 코드 작성 (리팩토링을 위한 ChallengeEvent 단위 테스트 및 Challenge API 테스트 코드 작성)
: [3] 상속 및 컴포지션 방식을 통한 중복 코드 개선 (95% -> 10%)
: [+] 추가 리팩토링 아이디어 채굴을 위한 디자인 패턴 학습 중...

챌린지 일정산정 中

# 클린코드, 파이썬 클린 코드 (독서 2권)

: 12월 말 ~ 2월 중순까지 약 6주간 클린코드, 파이썬 클린 코드 2권 완독 & 노트 정리 (추가 복습 필요)

: 한줄 감상평 1. '중복 코드를 줄이자. 방법을 모르겠다면 책을 통해 아이디어를 얻자.'
: 한줄 감상평 2. '입사 초에는 이해가 안갔지만... 챌린지 프로젝트 이후 몰입도 ↑'
: 한줄 감상평 3. '2권이나 읽었지만 한 번씩 더 읽어야 이해할 수 있을 것 같다'

: 깨달음 1. '신문 기사처럼 코드를 작성하자. 세부 내용이 궁금하면 클릭해서 들어가도록 유도하는 느낌으로...'
: 깨달음 2. '코드 중복이 아닌, 코드 구조에 대한 중복도 줄일 수 있는 방법이 존재한다'

 


▶ 2022 세부 타임라인 + 총평

 

 

 


 

 

 


 

 

 


 

 

 


 

 


 

여기까지 <2022 My Report - 업무편> 을 작성해보았습니다.

이렇게 바쁘기도 바빴고 많은 걸 경험하고 공부한 한 해가 지나갔네요!

2022년에는 특히 사용자 친화적인 서비스 개발을 주로 담당했는데 그 만큼 요구사항도 복잡하고 서버 DB CPU 상태도 아슬아슬해서 알고리즘 문제를 분해하듯이 업무에 임했던 것 같아요...ㅎㅎㅎ (특히 챌린지 프로젝트 난이도가...)

그래도 이렇게 정리하고 보니 뿌듯하네요. 2023년도 다시 힘내봐야겠어요!

벌써 2월이지만 올해는 좀 더 깊이 있게 공부하고 저만의 업무 매뉴얼을 만들어보는 한 해가 되었으면 합니다:)