실시간 이미지 가공

해결하고 싶은 문제

이미지는 용도에 맞추어 다양하게 가공된다. 이미지가 늘어날수록 관리가 어려워진다. 배치(batch) 프로세스로만으로는 더 이상 새로운 기획에 기민하게 대응할 수 없다.

솔루션/패턴 설명

이미지 요청시 가공 형태를 URL에 명시한다.

../../_images/dgm007.png

M2 를 통해 원본 이미지를 원하는 형태로 실시간 가공하여 전달한다.

구현

  • 이미지 스토리지 앞에 이미지 변환서버 용도의 M2 를 배치한다.

  • DIMS 기능을 활성화한다.

    {
      "hosting": [
        {
          "name": "image.example.com",
          "origin": {
            "protocol": "http",
            "address": [ "10.10.10.10", "10.10.10.11" ]
          },
          "functions": {
            "contents": {
              "dims": {
                "meta" : {
                  "enable": true,
                  "keyword": "dims"
                }
              }
            }
          }
        }
      ]
    }
    
  • 원본 이미지 URL 뒤에 원하는 가공옵션을 붙여 호출한다.

    http://image.example.com/origin.jpg/dims/resize/500x500/optimize
    

장점/효과

  • 원본 이미지 1장만 있다면 어떠한 이미지라도 실시간으로 만들 수 있다.

  • 백엔드의 이미지 가공 시스템이 불필요해진다.

주의점

M2 최대 처리가능 이미지 용량(기본 10MB)을 넘거나 비정상 원본이라면 가공하지 않고 원본을 전송한다.

기타

이미 사용중인 URL 패턴이 있다면 커스터마이징 모듈을 통해 호환성을 확보한다.