Static Website
Dynamic Website
문제점
- 보안 이슈 발생
- Scaling 비용 비쌈
- 불필요한 자원 소모 발생
- 웹사이트를 유지보수하기 위해 복잡한 코드들을 파악해야 함
대안
- 캐싱
- 사용하기 어려움
- 특히 cache invalidation가 매우 어려운 작업
- 캐싱을 해도 결국 static website에 비해 느릴 수 밖에 없음
Static Website Generator
- 물론 Static website를 만드는 것이 dynamic으로 만드는 것에 비해서 수고가 많이 들어가는 것은 사실
- 그러나 최근에 Static website generator을 사용하게 된다면 이러한 문제점의 상당수가 해소 가능
특징
Templating
- 각 페이지를 레이아웃으로 나눔
- 중복되는 코드를 제거
- logic-less, mixture of template and code 등 다양
Markdown support
- 모든 Static website generator들이 Markdown을 지원함
- 디자인 요소와 컨텐츠를 분리하여 관리할 수 있게 도와줌
- 모든 컨텐츠를 순수한 텍스트로 저장할 수 있음
- 여러 메타 데이터들도 컨텐츠의 제일 앞부분에 붙여 함께 관리
- 일반적으로 YAML 포맷을 사용하곤 함
Asset pipeline
- asset의 컴파일러, 변환기 등 여러 툴들을 파이프라인으로 관리
- 예를 들면 Babel이라던가, LESS라던가, Minifier 따위
- 일부는 Grunt, Gulp 등 기존의 build tool에 기초
- 별도의 복잡한 설정 없이 이용할 수 있게 제공됨
Putting it all together
- CLI든 GUI든 웹 인터페이스건 이용하여 build를 하면 바로 배포 가능한 Static website를 만들어줌
지금에야 화제가 된 이유
브라우저의 발달
- 현대의 브라우저는 일종의 자체적인 OS처럼 동작
- 따라서 하나의 완전한 Web Application을 실행할 수 있게 됨
- 서버 사이드의 코드로만 가능하던 일들을 이제는 클라이언트 사이드에서 처리하는 것이 가능
- 수많은 add-ons로 필요한 기능을 모두 붙일 수 있음
CDN의 대두
- 예전에는 규모가 큰 엔터프라이즈들이나 쓰던 CDN이었지만 지금은 모두가 쓸 수 있게 진입 장벽이 낮아짐
- Static website는 CDN에서 바로 제공하는 것이 가능
중요해진 성능
- 모바일 환경의 규모가 거대해짐에 따라 성능의 중요성이 급상승
- 아무리 Dynamic website의 성능을 최적화 하더라도 Static website를 따라잡기 힘듬
- 개발 단계에서 성능 최적화에 들어가는 비용이 확연히 줄어듬
- 예전엔 build tool은 백엔드 개발자들이나 신경쓰던 물건
- 그러나 지금은 프론트엔드 개발자들도 수많은 build tool들을 사용하고 거기에 익숙해진 상황
- 그에 따라 쉽게 플로우에 적응할 수 있게 됨