개요

우수한 생산성으로 보안을 강화하는 엔터프라이즈 수준 웹 프레임워크를 제공하고 Java 지식이 없는 HTML 개발자의 AEM 프로젝트 참여도를 높이는 것이 AEM(Adobe Experience Manager)에서 지원하는 HTL(HTML 템플릿 언어)의 목적입니다.

HTML 템플릿 언어는 AEM의 HTML에 대해 선호되고 권장되는 서버측 템플릿 시스템입니다. HTL은 AEM 6.0에서 도입되었으며 JSP(JavaServer Pages)를 대체합니다. 강력한 엔터프라이즈 웹 사이트를 구축해야 하는 웹 개발자의 경우 HTML 템플릿 언어가 강화된 보안 및 개발 효율성 달성에 도움이 됩니다.

강화되는 보안

HTML 템플릿 언어에서는 프레젠테이션 레이어로 출력되는 모든 변수에 적절한 컨텍스트 인식 이스케이프를 자동으로 적용할 수 있으므로 HTL을 구현에 사용하면 사이트의 보안이 JSP 및 기타 대다수 템플릿 시스템의 경우보다 강화됩니다. HTL에서는 HTML 구문을 이해하고 해당 지식을 사용하여 마크업에서의 위치를 기반으로 표현식에 필요한 이스케이프를 조정하므로 이 작업이 가능합니다. 예를 들면, 다른 속성이나 다른 위치에 배치된 표현식에서 다르게 이스케이프되는 href 또는 src 속성에 표현식이 배치됩니다.

JSP와 같은 템플릿 언어에서도 같은 결과를 얻을 수 있지만 개발자가 각 변수에 적절한 이스케이프가 적용되었는지 수동으로 확인해야 합니다. 적용된 이스케이프가 하나라도 생략되거나 실수가 있으면 XSS(크로스 사이트 스크립팅) 취약성의 원인이 될 가능성이 충분하므로 당사에서는 HTL로 이 작업을 자동화하기로 결정했습니다. 필요하면 개발자가 표현식에 서로 다른 이스케이프를 지정할 수도 있지만, HTL에서는 기본 동작이 원하는 동작에 해당할 가능성이 훨씬 많으므로 오류 가능성이 감소합니다.

간소화되는 개발

HTML 템플릿 언어는 쉽게 배울 수 있으며 기능은 간단하고 복잡하지 않게 유지되도록 의도적으로 제한했습니다. 또한 마크업을 체계화하고 로직을 호출하는 동시에 마크업과 로직 간 문제의 엄격한 구분을 항상 강제로 적용하는 강력한 메커니즘이 있습니다. HTL 자체는 표현식 및 데이터 속성을 사용하여 원하는 동적 동작으로 마크업에 주석을 다는 표준 HTML5입니다. 즉, 마크업의 유효성을 훼손하지 않고 가독성을 유지합니다. 참고: 표현식 및 데이터 속성에 대한 평가가 전적으로 서버측에서 수행되며 클라이언트측에 표시되지 않으므로 원하는 JavaScript 프레임워크를 방해 없이 사용할 수 있습니다.

Java 지식이 없고 제품별 지식이 거의 없는 HTML 개발자가 이러한 기능을 통해 HTL 템플릿을 편집할 수 있으므로 개발팀에 포함될 수 있으며 전체 스택 Java 개발자와 함께 수행하는 공동 작업이 간소화됩니다. 반대로, Java 개발자는 HTML에 대한 걱정 없이 백 엔드 코드에 집중할 수 있습니다.

절감되는 비용

보안이 강화되고 개발이 간소화되며 팀 공동 작업이 개선되면 AEM 프로젝트에 드는 노력이 감소하여 TTM(출시 시기)이 빨라지고 TCO(총소유비용)가 절감됩니다.

구체적으로, HTML 템플릿 언어로 Adobe.com 사이트를 다시 구현할 때 프로젝트의 비용과 기간이 25% 정도 감소할 수 있는 것으로 나타났습니다.

효율적인 증가 및 비용 절감

위의 다이어그램은 HTL를 통해 가능해질 수 있는 다음과 같은 효율성 개선 사항을 보여줍니다.

  • HTML/CSS/JS: HTML 개발자가 HTL 템플릿을 바로 편집할 수 있으므로 더는 프런트 엔드 디자인을 AEM 프로젝트에서 별도로 구현할 필요 없이 실제 AEM 구성 요소에 바로 구현할 수 있습니다. 따라서 전체 스택 Java 개발자의 성가신 반복 작업이 감소합니다.
  • JSP/HTL: HTL 자체가 Java 지식이 필요하지 않으며 간단하게 쓸 수 있으므로 개발자가 HTML 지식만 있으면 템플릿을 편집할 수 있습니다.
  • Java: HTL에서 제공되는 Use-API를 명확하고 간단하게 사용할 수 있으므로 비즈니스 로직이 있는 인터페이스가 명확해지며 Java 개발에도 전반적으로 도움이 됩니다.

다음 참조:

이 페이지에서는