2026년에 PHP로 블로그를 만든 이유

작은 블로그를 위해 Nginx, PHP-CGI와 파일 기반 콘텐츠를 선택한 이유를 정리합니다.

이 블로그의 목적은 기록을 쌓는 것뿐만 아니라, 웹 서버부터 콘텐츠가 전달되는 과정까지 직접 이해하는 데 있습니다. 그래서 필요한 기능보다 큰 프레임워크를 먼저 선택하지 않았습니다.

작은 런타임

Nginx가 정적 파일을 처리하고, 그 외 요청은 FastCGI를 통해 PHP로 전달합니다. PHP는 URL을 해석하고 미리 생성된 HTML을 템플릿에 넣어 응답합니다.

GET /ko/posts/example
    → Nginx
    → PHP-CGI
    → generated HTML

글 작성 과정과 서비스 런타임도 분리했습니다. Markdown 변환과 코드 하이라이트는 별도 빌드 스크립트가 담당하고, 운영 서버는 완성된 HTML만 읽습니다.

의도적으로 남겨 둔 단순함

페이지 이동에는 링크를, 데이터 제출에는 HTML 폼을 사용할 계획입니다. JavaScript는 테마나 코드 복사처럼 브라우저에서만 해결할 가치가 있는 기능에 제한합니다.

이 선택이 모든 서비스에 적합한 것은 아닙니다. 하지만 개인 기술 블로그에는 구조를 작게 유지하면서 서버 렌더링, URL 설계, 캐싱과 데이터 저장을 직접 다룰 수 있는 좋은 기준점입니다.

package com.codemcd.springcustomvalidation.dto;

import lombok.*;

import javax.validation.constraints.NotNull;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
@ToString
public class PersonDto {

    @NotNull
    private String name;

    private int age;

    @NotNull
    private String birthday;

    @Builder
    public PersonDto(String name, int age, String birthday) {
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }
}