비즈니스 네트워킹 서비스 로켓펀치를 서비스하던 로켓펀치와 디자인 에이전시 엔스파이어가 2021년 합병하여 알리콘(Alicorn)이 되었습니다. 포스트 코로나 시대에 대비하여 앞으로는 완전히 다른 업무 환경이 요구될 것이라는 전제하에 온라인과 오프라인에서 일하는 사람들을 위한 플랫폼을 만들고 있습니다.

집무실은 “집 근처 사무실”을 표방하며, “자아의 가치 실현을 위해 성장하는 회원들의 미래형 비즈니스 라운지”를 지향한다고 합니다.

과제

24시간 쉬지 않고 운영되는 집무실에서는 공간의 분위기 연출을 위해 낮, 밤, 그리고 간식 시간에 맞춰 서로 다른 음악을 재생하고 있습니다.

근무 공간의 온도, 습도 그리고 재생 중인 음악이 표시되는 집무실 앱 화면

개인적인 청취가 아닌 영업장 공간에서 음악을 재생(공연)하기 위해서는 별도의 저작권 사용료 산정에 따른 비용을 지불해야 합니다. 이를 준수하여 비용을 지불하거나, 영업장에서의 음악 재생을 쉽게 처리할 수 있는 샵앤뮤직, 비즈멜론 등의 매장음악서비스업체를 사용해야 합니다. 집무실은 이런 사업체가 서비스 이용을 위해 특정 운영체제를 사용하도록 강제하는 것에 만족하지 못해, 별도의 합법적인 경로로 음원을 확보하고 라즈베리파이 등의 전용 장치로 음악을 재생하고 있습니다.

영업장 형태와 크기에 따라 지정된 공연사용료 (출처: KOSCAP)

이제까지는 음원 담당자가 구글 드라이브의 특정 폴더에 파일을 업로드 해두면 정기적으로 IoT팀에서 (1) 구글 드라이브로부터 파일을 다운로드 받아 (2) FFmpeg의 loudnorm 필터를 적용하여 볼륨을 일정 수준으로 맞추고 (3) 재생을 담당하는 라즈베리파이에 ssh로 원격 접속하여 변환된 파일을 다운로드 받은 후, (4) MPD를 통해 플레이리스트를 구성해 재생 목록을 갱신하고 있었습니다.

해결 과정

현재 정동점, 서울대점 등 총 6개 지점을 운영하고 있고 담당자가 각 지점별 기기에 접속해 수동으로 작업해야 하는 번거로움이 있어, 다음과 같이 공정을 개선하고자 했습니다.

  1. 구글 드라이브 대신 AWS S3에 파일을 업로드 한다.
  2. 파일이 업로드 되면 FFmpeg가 레이어링된 AWS Lambda를 이용해 필터 작업을 수행한다.
  3. 파일이 삭제된 경우에는 대상 폴더에서 자동으로 파일을 삭제한다.
  4. 지정된 시점에 각 라즈베리파이 노드는 S3로부터 변환된 파일을 동기화 한다.
  5. MPD를 통해 재생 목록을 갱신한다.

작업 과정에서 다음과 같은 점을 발견했습니다.

  • AWS 람다의 메모리와 CPU 속도에는 상관관계가 있어, 빠른 속도로 변환하기 위해서는 해당 람다 함수에 높은 메모리를 지정해야 합니다. 당시에는 불필요한 비용 낭비가 일어날 것으로 생각했으나, 낮은 메모리를 지정하면 총 수행 시간이 길어지게 되므로 결국 비슷한 금액이 청구됩니다.
    • 람다 함수의 기본 메모리 설정에서 1배속(3분의 오디오 변환에 3분 소요), 10GiB를 지정하는 경우에는 대략 14~15배속 정도의 변환 속도를 보였습니다.
  • S3에 오브젝트 생성/삭제 이벤트가 일어날 때 버킷의 전체 파일을 대상으로 변경 사항을 확인하여 작업을 수행하도록 했는데, 그럴 필요 없이 이벤트에 해당하는 파일만 변환하거나 삭제하게 하면 로직이 더 단순해지고 실행 시간도 최적화됩니다.

더 알아보기

  • 기존의 ffmpeg-lambda-layer를 사용해도 되었지만, 특정 FFmpeg 버전과 Python 3를 포함한 레이어를 별도로 만들어 S3에 업로드해 사용했습니다.

영상