2020년 회고 밎 새해 다짐

참으로 오래간만에 포스팅을 하게 되었습니다.

눈 감았다 떠보니 2021년이 되어 있을 정도로 정신없이 일했던 것 같습니다.

 

전 직장에서는 보안장비에 올라가는 관리자 화면을 개발했습니다.

제품의 특성상 회사의 핵심적인 업무가 아니었기 때문에 웹 개발자로서 성장의 한계를 체감하였습니다.

신기술 도입에도 인색하여 변변한 사내 업무관리 시스템이나 버전 관리 시스템 조차도 없어서

이메일과 공유폴더로 업무를 관리하다 보니 업무 효율도 시대에 뒤떨어지는 부분이 많았습니다.

 

반면에 현재 다니는 회사에서는 Notion으로 모든 프로젝트와 일정, 문서를 관리하고 있습니다.

참고: 스타트업, 더 좋은 문서도구가 필요해요! Notion을 만나다. | by seapy | 당근마켓 팀블로그 | Medium

 

기존에는 Jira+Confluence 로 협업시스템이 구성되어 있었습니다만, 최근 업데이트 이후 전체적으로 굼뜨고 무거워지는 문제가 생겼습니다.

그 바람에 대체할 솔루션을 찾고 있던 도중 Trello를 알게 되었고, 잠시 Trello로 일정관리를 하다 이번에 최종적으로 Notion에 안착하였습니다.

협업 툴을 변경하자는 제안을 대표님께서 혼쾌히 수락해주시고, 동료들도 새로운 도구를 익히는데 불편함을 감수해 준 덕분입니다.

 

회사가 운영하고 있는 서비스에도 많은 기능들이 추가되었습니다.

그 중 주요한 것을 뽑자면 아래와 같습니다.

  • 해외 수출을 위한 검역신청관리기능
  • 1:1 상품문의 기능 (like 네이버 톡톡상담)
  • 서비스내 상품광고기능 (키워드광고 등)
  • 이벤트 로깅 시스템
  • 상품후기 시스템 개선 (포토후기 등)
  • 상품 추천시스템 개발
  • 신규상품 등록 키워드 알림기능
  • HTML5 기반 상품 이미지 업로더 도입

 

뿐만 아니라, 서비스 아키텍처 구성에도 큰 변화가 있었습니다.

  • 더 많은 부분에 Redis 캐시 도입
  • 서버 증설 및 PC/모바일 웹서버 분리
  • MySQL 신규 Replication 서버 구성
  • 이미지 서버 증설 및 무중단 데이터 이전
  • 비동기 방식 상품이미지 업로드 시스템 도입

 

2019년과 2020년은 실무에서 좌충우돌하는 성장의 기간이였다면,

2021년에는 그동안 계획했던 Modern PHP의 도입, CI/CD 등 서비스/개발프로세스 고도화의 한 해가 되기를 소망합니다.

회고

서비스 응답속도 저하시 php-fpm 로그로 원인분석하기

php-fpm 기반의 웹 서비스에서 알 수 없는 문제로 응답속도가 저하되는 현상이 발생 할 경우가 종종 있다.

원인은 여러가지일 수 있다. 몇 가지를 꼽자면,

  1. DBMS의 SQL 응답속도 저하 (Slow Query)
  2. 네트워크 지연
  3. 서버 리소스 점유율 (CPU, RAM 등)
  4. Disk 입출력 문제

등이 있다.

하지만, 서버 리소스나 네트워크에 별 다른 문제가 없고, Slow Query 로그에도 별다른 이상징후가 없다면,
원인분석을 해야 하는데, 이 경우 Web Application에서 어느 로직에서 문제가 발생하는지 원인을 찾아야 한다.

개발환경이라면 Xdebug를 활용 수 있겠지만, 실 서비스 중인 서버에는 적용할 수 없는 방법이다.

이 때는 php-fpm의 slowlog를 찍어서 확인하는 방법이 있다.

php-fpm.conf 파일을 열어보면 아래와 같은 설정을 확인할 수 있다.

......
request_slowlog_timeout = 30s
slowlog = /var/log/php-fpm/slow.log
......

여기서 request_slowlog_timeout을 3~5s 정도로 낮추고, php-fpm 서비스를 재시작한다.

그 후 tail 명령으로 /var/log/php-fpm/slow.log 를 확인 후 응답속도가 느린 페이지에 접속을 계속 시도해보면 다음과 같은 로그가 찍힌다.

[10-Nov-2018 11:30:22]  [pool www] pid 8260
script_filename = ******************
[0x00007f1a47de79a8] fopen() ****.php:422
[0x00007f1a47de6500] +++ dump failed

이 로그에는 응답속도 저하의 원인이 되는 파일과 해당 function까지 추적해주기 때문에 원인을 금방 파악할 수 있다.

DevOps 장애조치 PHP php-fpm Linux

블로그 방치

새로운 회사에 입사후 지금까지 블로그를 거의 방치해 놓았다.

가끔 기술 관련된 글도 올리고 해야 하는데 여유가 별로 없었던 듯... ㅡ,.ㅡ

얼마전에 Laravel 6.0 LTS도 출시되었는데 업데이트도 하고 기능 추가도 할 겸 블로그 손도 봐야 할 것 같다.

Blog Life Laravel