[부스트캠프 AI Tech 5기] 디버깅 case study

박상우·2023년 4월 25일
1

부스트캠프

목록 보기
44/53
post-thumbnail

디버깅

디버깅이란?

  • 어떻게 해야 할까?
  • 바라는 상황과 실제 발생한 상황의 차이에서 발생

버그가 생기는 이유

  • 사람의 실수 : 휴먼 오류
  • 실행 환경 : OS, 가상 환경, 컨테이너, 하드 웨어
  • 의존성 : 다른 라이브러리의 버그
  • 복잡성 : 소프트웨어가 복잡해질 수록 버그 가능성 높아짐
  • 커뮤니케이션 실수 : 요구가 사항이 명확하지 않거나, 서로 다르게 이해

디버깅 프로세스

  • 오답 노트까지 기록해놓으면 이후 용이

문제 인식

  • 무엇이 문제인지 아는 것이 중요
  • 일단 환경을 확인해보자 (OS, 가상 환경, 버전)
  • 재현 가능하도록 준비
  • 이후 오류 메시지를 읽어보자
  • 오픈소스 이름 + 오류 메시지로 검색
  • 주로 Stackoverflow, 오픈 소스 Github Issue에 해답이 존재
  • ChatGPT도 잘 알려줌 (100% 신뢰는 금물)

오답노트

  • 오류는 보통 또 발생할 것
  • 문제 상황, 오류 메세지, 해결한 방법을 작성
  • 데이터화를 하자

정리

  • 디버깅은 오류나 버그를 찾고 수정하는 과정
  • 시간이 걸리는 것이 당연하다는 마음 가짐
  • 의도적으로 여유로움을 챙기자
  • 너만의 프로세스를 만들어보렴

서버 관리 Case Study

  • AI, ML 엔지니어의 모델은 대부분 서버에서 동작
  • 깊은 서버 관리가 아닌, 간단한 서버 관리를 다루어보자

서버

  • 꼭 클라우드의 서버만 서버는 아님 (내 집 컴퓨터도 일종의 서버)
  • 서버 관리는 장애를 발생시키지 않기 위함

파일 시스템

  • 표준안이 존재
  • 암기할 필요는 없고, 참고만 하자

디스크 문제

  • 서버가 어느 환경에서 실행 중인지 확인 필요
    • Cloud
    • Host 머신에서 실행 여부
    • Docker, 쿠버네티스와 같은 Container
    • On Premise (IDC와 같은 물리적으로 접근 가능한 서버)

네트워크

  • IP : 네트워크에 연결된 다른 컴퓨터의 주소
  • IP 주소는 어려우니 도메인을 구매해서 설정
  • DNS : 사람이 읽을 수 있는 도메인 이름 (192.0.2.44 를 www.amazon.com 으로 변환)
  • Port : 포트 숫자는 Pc에 접속할 수 있는 통로
  • 방화벽 : OS에 특정 IP, Port만 접속할 수 있도록 설정

ping

  • 네트워크 진단시 사용
  • 네트워크 상에서 서버에게 작은 패킷을보내고, 서버가 받았다는 신호로 동작
  • ping + IP 주소, 도메인 이름을 입력

nslookup

  • 네트워크 진단시 사용
  • 특정 도메인을 찾을 수 있는지 확인 가능
nslookup google.com
  • 서버에 DNS 연결이 잘 되어 있는지 1차적으로 확인 가능

netstat

  • 연결된 포트 정보들을 확인
  • 특정 포트만 확인할 때는, grep 명령어와 같이 활용
netstat -tlnp | grep 3000 

Case study

  • 서버에서 Jupyter Notebook을 실행했는데 웹에서 접속할 수 없음

해결 방법

  • IP 주소를 잘 작성했는지 확인 : 내부용 IP, 외부용 IP 중 어떤 것을 사용했는지
  • 네트워크 연결 확인 : ping이 정상적으로 가는지, netstat으로 포트 확인
  • 방화벽확인:서버의 Port는 기본적으로 많이 차단되어있음(많이 열려있으면 해킹가능) 방화벽 설정에서 특정 Port 오픈을 해야 접근할 수 있음
  • 로그 확인 : Jupyter Notebook을 실행한 터미널에서 접근 AccessLog가 남는지 확인(남지 않으면 잘못된 곳에 접근 하고 있을 확률이 존재)

성능 모니터링

top

glances

  • CPU, Memory, Disk, GPU, Docker Container 상태까지 모니터링
  • 웹 인터페이스도 존재, API 도 존재
  • pip install glances[all]로 설치
profile
세상아 덤벼라

0개의 댓글