Lambda 성능 개선 7가지 방법

Volc·3일 전
0

AWS

목록 보기
15/15

충분히 빠르다는 생각을 하지만 그래도 더 최적화 해달라는 요청이 있어. 최적화를 해보았다.

불필요한 코드 제거

  • 불필요한 코드는 메모리를 잡아 먹어 성능을 저하시킬 수 있다.
    • import 중복 제거
      • import 중복 제거는 크게 영향을 끼치지 않지만 그냥 제거한다.
    • 의미없는 print 제거
      • print()함수는 I/O exception으로 성능을 많이 저하시킬 수 있다.
      • 필요한 경우 logging을 사용하자
        • info, debug, error 별로 유연하게 출력가능

연결은 한번만 하자.

  • 로직 내에 DB와 여러번 연결을 하는 경우 전역변수를 활용하여 한번 생성한 연결을 재사용하는 singleton 구조로 만든다.
  • 주의사항은 멀티스레딩에서 안전하지 않기 때문에 잘 사용해야한다.

여러번 사용하는 데이터는 한번만 불러오자.

  • 정적인 데이터는 json으로 저장하여 전역 변수로 한번만 불러와 사용하자.

코드는 알아서 최적화

  • 코드를 비효율적으로 짜지 말자.
  • ex) pandas의 마지막 행의 특정 컬럼을 여러번 가져오는 코드가 있을 때, 마지막 행만 따로 저장 후 컬럼을 가져오자.

아키텍처 변경

  • x86_64을 arm으로 변경하자.
  • 값도 싸고 성능도 빠르다.

cold start 방지

  • event 뜸한 경우는 lambda가 죽지 않도록 event scheduler를 등록하여 1분에 event를 하나씩 쏘아준다.
  • event가 많은 겨웅 cold start 방지를 위해 프로비저닝된 동시성 구성을 사용하자.
  • 1초에 데이터가 몇개 들어오는지, lambda가 하나의 event를 몇초에 처리하는지 보고 계산하여 특정 개수를 대기 시켜놓자.

lambda의 메모리를 늘리자.

  • 적당하다고 생각했는데 메모리가 늘어나니 속도가 빨라졌다.
  • 이유를 찾아보니 CPU, 네트워크 대역폭, 디스크 I/O도 비례해서 증가한다고 한다.
    • cpu 연산, 네트워크 요청 처리, redis, rds 접근 I/O, 머신러닝 모델 로딩, 대용량 데이터 처리 등의 성능이 증가한다.
profile
미래를 생각하는 개발자

0개의 댓글