studybook
  • Introduction
  • 실무 하며 깨닫는 부분 정리
    • 옵션에 대해서
    • 코드 작성의 순서
    • 자바 프로그램에 문제가 생겼다면
    • 장애 대처법
  • Logstash, Beats 정리
  • Zookeeper 정리
  • Message Queue 정리
    • RabbitMQ 삽질
  • Java 관련 정리
    • Java Primitive Wrapper class
    • Java NIO
    • Java8 Double colon operator
    • Effective Java
      • 4장
      • 5장
      • 6장 - Enum, Annotation
      • 7장 - Method
      • 8장 - 프로그래밍 일반
      • 9장 - Exception
    • Java8 Lambda expression
    • JDBC
    • Linux에서 WatchService 이상동작
  • Spring 관련 정리
    • Spring Bean init, destroy 순서
    • Spring Async Controller
    • Spring Executable jar 웹 개발 및 배포
    • Spring Boot Font 배포 에러
    • Spring AOP
      • Spring AOP로 모든 Request 로그 남기기
    • Spring Cache
    • Spring Cloud
      • Consul로 spring 설정 관리하기
    • Spring Test
      • Spring Test DirtiesContext
      • Spring Test MockBean, SpyBean
      • Spring Test Dynamic @Scheduled
    • Spring JDBC
    • Spring Validation
    • Spring Transaction Management
      • Spring with JTA 삽질
    • Spring에서 효율적으로 Static resource 관리하기
    • Zuul을 사용해서 Spring Reverse proxy 만들기
    • Spring Security
    • 스프링 어노테이션이 안 먹힐 때 의심해볼만한 것
    • Spring Data
    • Spring Webflux
      • Tobi 강연
  • 코드 리팩토링
    • 한번에 하나씩
  • 지속적 통합 (CI)
    • Jenkins pipeline 삽질기
  • Log Aggregator 정리
    • Flume 테스트
    • Fluentd 테스트
  • Web Socket 정리
  • Akka
    • Actor 모델
    • Supervision
  • IE 8 대응 정리
  • 함수형 프로그래밍
    • 모나드
  • Netty
    • Netty 기본 예제
    • Netty 주요 특징
    • Netty 부트스트랩
    • Netty 채널 파이프라인, 코덱
    • Netty 이벤트 모델
    • Netty 바이트 버퍼
  • 스칼라 관련 정리
    • Maven으로 컴파일하기
    • Scala def 괄호 여부의 차이
    • 스칼라 function, method 차이점
    • ScalaTest와 Spring 연동하기
    • Programming in Scala
  • J2S 컨퍼런스
  • Android
    • 테스트
    • NDK
  • DDOS
  • HTTP
  • HttpClient
  • Container
    • Image 개요
    • cri-o
    • kata containers
    • Open Container Initiative Image
    • Buildkit
  • Github pages
  • Static Website
  • Webhook
  • Service Discovery Tools
    • Etcd
    • Eureka
    • Consul
      • ACL
    • 비교
  • React
    • JSX
    • React Element
    • Components, Props
    • State, Lifecycle
    • Handling Event
    • Flux
  • Vagrant
    • SSH 접속
  • Linux
    • Systemd
    • Alternatives
  • Messaging protocols
    • XMPP
    • AMQP
  • Windows
    • Windows10 내장 우분투에 ssh 클라이언트로 접속하기
    • Windows10 Hyper-V와 Virtual Box가 충돌을 일으켰을 때
    • Hyper-V 기반 docker에서 Shared Drives 설정 실패할 때
    • 윈도우 개발환경 설정
    • Docker desktop 없이 docker 환경 세팅하기
    • UWP 앱을 항상 관리자권한으로 실행하는 바로가기 만들기
  • Spring camp 2017
    • Project Reactive
    • 이벤트 소싱
    • CQRS
  • Spring webflux
  • 리액티브 프로그래밍
  • Linux Settings
    • 홈서버 백업 및 복구기
    • 홈서버 트러블슈팅
  • Kubernetes
    • k3s 설치 및 삽질
    • pod resources
    • Argo workflow
    • 트러블 슈팅
      • Kubernetes namespace의 phase가 Terminating에서 멈춰있을 때
    • 쿠버네티스 마스터
    • Knative
    • Knative Pipeline
    • Aggrerated API server
    • Accessing the API
      • Authenticating
  • Sonarqube
  • HTTP/2
  • Go
    • Go Module
    • Go dependency injection
    • Go Error handling
    • Go in Action
      • 3장 패키지
      • 4장 배열, 슬라이스, 맵
      • 5장 GO의 타입 시스템
      • 6장 동시성
      • 7장 동시성 패턴
      • 8장 표준 라이브러리
      • 9장 테스트와 벤치마킹
    • Go Channel 사용법
  • Cloud Native
Powered by GitBook
On this page
  • Dynamic Website
  • 문제점
  • 대안
  • Static Website Generator
  • 특징
  • 지금에야 화제가 된 이유

Static Website

PreviousGithub pagesNextWebhook

Last updated 7 years ago

  • 순위 참고

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을 지원함

  • 디자인 요소와 컨텐츠를 분리하여 관리할 수 있게 도와줌

  • 모든 컨텐츠를 순수한 텍스트로 저장할 수 있음

Meta Data

  • 여러 메타 데이터들도 컨텐츠의 제일 앞부분에 붙여 함께 관리

  • 일반적으로 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은 백엔드 개발자들이나 신경쓰던 물건

  • 그러나 지금은 프론트엔드 개발자들도 수많은 build tool들을 사용하고 거기에 익숙해진 상황

  • 그에 따라 쉽게 플로우에 적응할 수 있게 됨

https://www.staticgen.com/