아이디어는 짧게. 시작은 멋지게.

한 줄의 아이디어,
나만의 웹사이트.

가게 소개, 클래스, 포트폴리오, 새로운 서비스까지. 만들고 싶은 웹사이트를 몇 마디로 설명하세요. 디자인과 이미지, 소개 문구와 상세 페이지를 준비해 드립니다.

회원도, 비회원도 시작할 수 있습니다. 비회원 미리보기는 생성 완료 후 24시간이며, 무료 이용을 계속하기 위해 그 안에 유료 호스팅을 구매할 필요는 없습니다.

비회원 미리보기와 회원 사이트의 유효기간은 전체 생성 완료 후 시작됩니다. 생성 대기 시간은 이용기간에 포함되지 않습니다.

설명하고, 확인하고, 내 것으로 만드세요.

복잡한 설정부터 배우지 않아도 됩니다. 먼저 눈으로 확인할 수 있는 웹사이트를 만드는 것부터 시작합니다.

01

원하는 모습을 알려주세요.

“전통 음식 만들기”, “동네 카페”, “수박 디저트 클래스”처럼 주제를 입력하세요. 웹사이트에 사용할 언어는 한국어와 영어 중에서 따로 선택할 수 있습니다.

02

완성되는 과정을 확인하세요.

주제에 맞는 문구와 이미지를 준비하고 페이지를 구성합니다. 작업 화면에는 실제 처리 상태가 표시됩니다. 요청이 몰리거나 상세 페이지가 많으면 더 걸릴 수 있습니다.

완료되기 전에 완료된 것처럼 표시하거나, 모든 요청이 같은 시간 안에 끝난다고 약속하지 않습니다.

03

둘러보고, 수정하고, 결정하세요.

미리보기에서 서비스 카드를 눌러 상세 페이지까지 살펴보세요. 계정으로 연결한 웹사이트는 이용 가능한 기간에 편집할 수 있습니다. 무료 이용은 정해진 확인기간에 계속 사용을 확인하고, 유료 옵션은 관리자에게 별도로 신청하세요.

첫 화면만 예쁜 사이트가 아닙니다.

주제에 맞는 첫인상

입력한 아이디어를 바탕으로 이름, 제목, 설명과 서비스 내용을 준비합니다. 준비된 레이아웃과 테마를 조합해 모바일에서도 읽기 편한 초안을 만듭니다.

이미지까지 함께

사용 가능한 이미지 라이브러리에서 주제와 어울리는 이미지를 선택합니다. 필요한 이미지를 직접 올리고 교체할 수도 있습니다. 보유 이미지가 부족한 주제에서는 선택의 폭이 좁을 수 있습니다.

눌러 볼 수 있는 상세 페이지

서비스별 상세 페이지와 소개, 문의 페이지를 준비합니다. 연락처와 주소는 실제 정보를 입력한 경우에만 사용하세요. 현재 문의 링크는 이메일·전화 연결이며, 문의 접수 폼과는 다릅니다.

내가 바꿀 수 있는 콘텐츠

계정에 연결한 웹사이트에서 문구, 이미지, 색상, 섹션 순서와 상세 내용을 수정할 수 있습니다. 생성 결과는 초안이므로 공개 전에 정확성과 표현을 확인해 주세요.

한국어 또는 영어로 시작

관리 화면의 언어와 웹사이트 콘텐츠 언어는 별개로 선택할 수 있습니다. 생성할 때 선택한 언어로 콘텐츠를 준비합니다. 언어 버튼만 눌러 기존 사이트 전체가 번역되는 기능은 아닙니다.

간단한 이니셜 로고

이름에서 만든 이니셜을 테마에 맞게 표시합니다. 글자는 직접 변경할 수 있습니다. 전용 로고 디자인이나 상표의 독창성·권리 보장을 의미하지는 않습니다.

무료로 시작하고, 나에게 맞는 이용 방식을 선택하세요.

비회원 미리보기는 전체 생성 완료 후 24시간입니다. 만료 전에 같은 브라우저에서 계정으로 연결하면 연결 시점부터 달력 기준 1개월의 유효기간이 시작됩니다. 회원으로 생성한 사이트의 유효기간은 전체 생성 완료 시점부터 시작됩니다. 무료 회원 사이트의 기본 유효기간은 달력 기준 1개월입니다. 유효기간이 끝나면 24시간 동안 사이트 소유자로 로그인하여 "이 사이트 계속 사용"을 선택할 수 있습니다. 확인하면 새로운 1개월의 유효기간이 시작됩니다. 무료 사이트는 매월 갱신이 필요하여 조금 번거로우실 수 있습니다. 사이트 이용이 중단되었다면 관리자에게 문의해 주세요. 개인정보와 데이터 보호를 위해 사이트가 닫힌 후 1개월이 지나면 모든 데이터가 삭제됩니다. 기본 방침에 따라 "대기 중"인 데이터는 콜드 스토리지로 이동하여 보관합니다.

상태이용 안내
생성 중작업 상태를 확인하세요. 비회원 미리보기와 회원 사이트의 유효기간은 전체 생성 완료 후 시작됩니다.
비회원 미리보기 · 완료 후 24시간 이내같은 브라우저에서 만료 전에 계정으로 연결하면 연결 시점부터 달력 기준 1개월의 유효기간이 시작됩니다. 회원 사이트의 실제 날짜는 내 사이트 이용기간 화면에서 확인하세요.
입금 확인 전신청이나 입금자명 입력만으로 유료 이용기간이 반영되거나 접근 기간이 연장되지는 않습니다. 무료 계속 사용 확인은 별도의 절차입니다.
무료 유효기간 종료 후 24시간 내 확인하지 않은 경우사이트 접근이 종료됩니다. 접근 종료 후 1개월 동안 관리자에게 무료 또는 유료 갱신을 요청할 수 있으며, 처리 여부는 관리자가 결정합니다. 자동 알림, 자동 오프라인 보관 및 자동 삭제는 구현되지 않았습니다.
관리자의 입금 확인 완료승인된 호스팅 이용기간이 반영됩니다. 도메인 연결과 공개 준비는 별도로 확인하며, 신청만으로 새 도메인에 자동 공개되지는 않습니다.

접근 종료 후 1개월 동안 관리자에게 무료 또는 유료 갱신을 요청할 수 있으며, 처리 여부는 관리자가 결정합니다. 자동 알림, 자동 오프라인 보관 및 자동 삭제는 구현되지 않았습니다. 중요한 문구와 자료는 별도로 보관하세요. 이미 내려받은 자료나 화면 캡처까지 회수하는 기능은 제공하지 않습니다.

무료 이용 정책 및 관리자 신청 옵션

무료로 시작하고, 계속 사용하는 방식을 선택하세요. 실제 적용 여부는 신청 전에 확인해 주세요.

무료 이용 유효성 확인

무료 / 유효기간 종료 후 계속 사용 확인

무료 회원 사이트의 기본 유효기간은 달력 기준 1개월입니다. 유효기간이 끝나면 24시간 동안 사이트 소유자로 로그인하여 "이 사이트 계속 사용"을 선택할 수 있습니다. 확인하면 새로운 1개월의 유효기간이 시작됩니다. 무료 사이트는 매월 갱신이 필요하여 조금 번거로우실 수 있습니다. 사이트 이용이 중단되었다면 관리자에게 문의해 주세요. 개인정보와 데이터 보호를 위해 사이트가 닫힌 후 1개월이 지나면 모든 데이터가 삭제됩니다. 기본 방침에 따라 "대기 중"인 데이터는 콜드 스토리지로 이동하여 보관합니다.

유효성 확인기간 1년 연장

5,000원 / 1년

pig.co.kr/s/… 형식의 주소를 유지하는 유효기간 1년 연장입니다. 관리자에게 신청하여 결제와 적용 조건을 안내받으세요.

내 도메인 적용 + 호스팅

20,000원 / 1년

내 도메인 적용과 1년 호스팅을 관리자에게 신청하는 옵션입니다. 결제와 설정은 관리자가 안내하며, 새 도메인 등록 조건과 비용은 별도로 확인하세요.

기존 신청서의 금액과 이용 종료일은 자동 변경되지 않습니다. 실제 적용 조건을 관리자에게 확인하기 전에는 새 요금을 기준으로 입금하지 마세요.

자세한 새 요금과 무료 이용 정책

유료 신청은 계좌이체로. 적용은 관리자 확인 후에.

  1. 1. 내 웹사이트를 계정에 연결합니다.비회원으로 만들었다면 같은 브라우저에서 회원가입하거나 로그인하세요. 호스팅과 결제 신청은 로그인 후 진행합니다.
  2. 2. 이용기간과 도메인 계획을 선택합니다.현재 기존 신청서는 월간 또는 최초 연간 조건을 사용합니다. 5,000원·20,000원 옵션은 이 신청서에 자동 적용되지 않으므로 관리자에게 별도로 신청하세요. 연락 이메일과 입금자명을 정확히 입력하세요.
  3. 3. 신청 화면에서 계좌와 금액을 확인합니다.안내된 은행, 계좌번호, 예금주, 신청번호와 금액을 확인한 뒤 이체하세요. 카드 결제나 온라인 결제창은 제공하지 않습니다.
  4. 4. 관리자가 실제 입금을 확인합니다.사용자가 완료를 눌렀다는 이유만으로 승인하지 않습니다. 입금자명이나 금액이 다르면 확인이 늦어질 수 있습니다. 신청 상태 화면에서 확인 결과를 확인하세요.
  5. 5. 승인된 이용기간과 공개 준비를 확인합니다.입금 확인 후 호스팅 이용기간을 반영합니다. 실제 도메인 연결과 공개 작업은 별도로 진행하고 확인합니다.

현재 계좌이체 호스팅 신청을 받고 있습니다.계좌 정보는 각 웹사이트의 호스팅 신청 화면에서 확인하세요.

입금 확인 대기만으로 접근 기간이 연장되지는 않습니다. 실제 종료일은 내 사이트 이용기간 화면에서 확인하세요. 계좌가 표시되지 않거나 안내가 서로 다르면 이체하지 말고 관리자에게 확인해 주세요.

웹사이트 주소는 준비 상황에 맞게 선택하세요.

이미 도메인이 있어요.

보유한 도메인을 신청서에 입력하세요. 연결에 필요한 설정과 소유 확인은 안내에 따라 진행합니다. 도메인 관리자 비밀번호를 공개 문구나 생성 요청에 적지 마세요.

나중에 정하고 싶어요.

먼저 웹사이트를 확인하고 도메인은 추후 제공할 수 있습니다. 호스팅 승인과 도메인 연결 완료는 서로 다른 단계입니다. 공개 주소가 준비되기 전에는 원하는 도메인으로 접속되지 않을 수 있습니다.

도메인 준비를 도와주세요.

도메인 준비 상담을 선택하세요. 등록 가능 여부와 비용을 확인한 뒤 가격을 안내합니다. 도메인 비용은 별도이며, 안내된 가격에 동의하기 전에 구매를 진행하는 것으로 처리하지 않습니다.

비회원 체험은 간단하게, 소유권은 안전하게.

비회원 작업은 사용한 브라우저의 세션에 연결됩니다. 다른 사람의 작업 번호나 링크를 입력하는 방식으로 소유권을 가져올 수는 없습니다. 미리보기 링크를 아는 사람은 미리보기 기간에 화면을 볼 수 있으므로 비공개 자료를 넣지 마세요.

계속 관리하려면 24시간 안에 같은 브라우저에서 회원가입하거나 로그인하세요.시크릿 창을 닫거나 쿠키를 지우거나 기기를 바꾸면 비회원 작업을 내 계정으로 연결하지 못할 수 있습니다. 이미 만료된 작업은 로그인한다고 자동 복구되지 않습니다.

비회원 생성에는 요청 횟수와 동시 작업 제한이 있습니다. 여러 번 생성하거나 요청이 몰린 경우 잠시 기다리라는 안내가 나올 수 있습니다. 회원가입은 호스팅 결제 승인과는 별개입니다.

시작하기 전에 궁금한 것들.

정말 회원가입 없이 만들 수 있나요?

비회원 체험 기능이 활성화된 동안 가능합니다. 페이지 상단의 시작 버튼과 안내를 확인하세요. 편집, 지속적인 관리, 호스팅 신청을 하려면 같은 브라우저에서 회원가입 또는 로그인으로 연결해야 합니다.

몇 초 만에 완성되나요?

작업량과 대기 상황에 따라 다릅니다. 처리 중인 단계와 완료 여부를 화면에서 확인할 수 있습니다. 상세 페이지를 준비하거나 요청이 몰리면 더 걸릴 수 있으며, 모든 요청에 5~10초 완료를 보장하지 않습니다.

24시간은 언제부터 시작하나요?

비회원 미리보기는 전체 생성 완료 후 24시간입니다. 만료 전에 같은 브라우저에서 계정으로 연결하면 연결 시점부터 달력 기준 1개월의 유효기간이 시작됩니다. 회원으로 생성한 사이트의 유효기간은 전체 생성 완료 시점부터 시작됩니다. 무료 회원 사이트의 기본 유효기간은 달력 기준 1개월입니다. 유효기간이 끝나면 24시간 동안 사이트 소유자로 로그인하여 "이 사이트 계속 사용"을 선택할 수 있습니다. 확인하면 새로운 1개월의 유효기간이 시작됩니다. 무료 사이트는 매월 갱신이 필요하여 조금 번거로우실 수 있습니다. 사이트 이용이 중단되었다면 관리자에게 문의해 주세요. 개인정보와 데이터 보호를 위해 사이트가 닫힌 후 1개월이 지나면 모든 데이터가 삭제됩니다. 기본 방침에 따라 "대기 중"인 데이터는 콜드 스토리지로 이동하여 보관합니다.

접근 종료 후 갱신을 요청할 수 있나요?

접근 종료 후 1개월 동안 관리자에게 무료 또는 유료 갱신을 요청할 수 있으며, 처리 여부는 관리자가 결정합니다. 자동 알림, 자동 오프라인 보관 및 자동 삭제는 구현되지 않았습니다.

입금했는데 아직 승인이 안 됐어요.

실제 입금은 관리자가 확인합니다. 신청번호, 입금자명과 금액을 확인하세요. 입금 확인 대기만으로 접근 기간이 연장되지는 않습니다. 실제 날짜는 내 사이트 이용기간 화면에서 확인하세요. 접근 종료 후 1개월 동안 관리자에게 무료 또는 유료 갱신을 요청할 수 있으며, 처리 여부는 관리자가 결정합니다.

무료 이용 정책은 어떻게 되나요?

무료 회원 사이트의 기본 유효기간은 달력 기준 1개월입니다. 유효기간이 끝나면 24시간 동안 사이트 소유자로 로그인하여 "이 사이트 계속 사용"을 선택할 수 있습니다. 확인하면 새로운 1개월의 유효기간이 시작됩니다. 무료 사이트는 매월 갱신이 필요하여 조금 번거로우실 수 있습니다. 사이트 이용이 중단되었다면 관리자에게 문의해 주세요. 개인정보와 데이터 보호를 위해 사이트가 닫힌 후 1개월이 지나면 모든 데이터가 삭제됩니다. 기본 방침에 따라 "대기 중"인 데이터는 콜드 스토리지로 이동하여 보관합니다. 자세한 새 요금과 무료 이용 정책

5,000원과 20,000원 옵션의 차이는 무엇인가요?

유료 옵션은 pig.co.kr/s/… 주소를 유지하는 유효기간 1년 연장 5,000원과 내 도메인 적용·1년 호스팅 20,000원입니다. 관리자에게 신청하여 결제와 설정을 안내받으세요. 새 도메인 등록 조건과 비용은 별도로 확인하세요. 기존 신청서의 금액과 조건은 이 안내로 변경되지 않으므로 입금 전에 관리자에게 최종 조건을 확인하세요. 자세한 새 요금과 무료 이용 정책

카드나 자동이체로 결제할 수 있나요?

현재는 안내된 계좌로 직접 이체하는 방식만 사용합니다. 온라인 결제 게이트웨이와 자동 청구는 제공하지 않습니다. 유료 옵션은 관리자 입금 확인 전에는 적용되지 않습니다.

도메인도 요금에 포함되나요?

포함되지 않습니다. 보유 도메인을 제공하거나 도메인 준비를 요청할 수 있습니다. 새 등록이 필요한 경우 비용을 먼저 안내하고 별도로 협의합니다.

웹사이트가 만들어지면 바로 내 도메인에서 열리나요?

생성 완료는 미리보기 준비 완료를 뜻합니다. 호스팅 신청, 입금 확인, 도메인 확인과 연결, 실제 공개 준비는 별도 단계입니다. 완료 여부를 확인한 뒤 공개 주소를 안내합니다.

생성된 글과 이미지를 그대로 공개해도 되나요?

생성 결과는 검토가 필요한 초안입니다. 사실 관계, 서비스 내용, 저작권과 이미지 사용 권한을 확인하세요. 실제 주소, 전화번호, 이메일과 운영 정보는 직접 입력하고 검토해야 합니다. 생성 기능이 사실의 정확성이나 상표 권리를 보증하지는 않습니다.

한국어와 영어가 동시에 들어 있는 사이트인가요?

현재는 생성할 때 고른 한 언어의 콘텐츠를 준비합니다. 관리 화면의 언어 전환은 기존 사이트 내용을 자동 번역하지 않습니다. 언어별 콘텐츠를 따로 저장하고 전환하는 완전한 이중 언어 사이트 기능은 별도 확장입니다.

생각만 하던 웹사이트,
먼저 눈으로 확인하세요.

완벽한 기획서가 없어도 됩니다. 시작할 수 있는 한 줄이면 충분합니다. 완성된 모습을 살펴본 뒤, 계속 사용할지 결정하세요.

웹사이트 · 데이터 · 연속성 기존의 오래된 웹사이트를 업그레이드하는 일, “마이그레이션”이라는 용어는 웹사이트 리뉴얼, 웹사이트 업그레이드 또는 시스템 이관과 같은 개념과 혼용되는 경우가 많습니다. 한국어 웹사이트에서는 한글의 표시가 중요한 요인이며, 단순히 인코딩을 UTF-8로 바꾸는 경우는 드뭅니다. 좀 더 자세히 살펴보겠습니다.

한국어에서 “migration”은 일반적으로 마이그레이션, 시스템 이전 또는 데이터 이관이라고 부릅니다.

웹사이트 프로젝트에서는 다음을 구분하는 것이 도움이 됩니다.

  • 시스템 마이그레이션: 기존 시스템 전체를 새로운 환경으로 옮기는 일.
  • 데이터 이관: 기존 데이터베이스와 콘텐츠를 새로운 데이터베이스로 옮기는 일.
  • 레거시 시스템 현대화: 오래된 기술과 구조를 현대적인 환경에서 다시 구축하는 일.

레거시 웹사이트 마이그레이션이란 무엇일까요?

레거시 웹사이트 마이그레이션은 기존 웹사이트를 새로운 디자인이나 기술로 교체하는 것 이상의 작업입니다.

이는 웹사이트의 소스 코드, 데이터베이스, 게시판, 회원 정보, 첨부 파일 및 비즈니스 로직을 분석하고, 이러한 구성 요소를 새로운 환경으로 이전하는 복잡한 과정입니다. 원래 웹사이트는 흔히 LAMP 스택(Linux, Apache, MySQL, PHP)으로 구축되어 있으며, 새로운 환경은 예를 들어 Python/Django, PostgreSQL, Nginx 및 Ubuntu를 기반으로 할 수 있습니다.

오래된 시스템에서는 데이터가 여러 게시판과 테이블에 흩어져 있는 경우가 많고, EUC-KR이나 CP949 같은 서로 다른 문자 인코딩이 혼재하기도 합니다. 따라서 데이터를 복구하고 UTF-8로 변환하는 작업은 상당한 수작업이 필요한 노동 집약적인 과정입니다.

그러므로 진정한 마이그레이션은 자동화 프로그램 하나를 실행하는 것만으로 이루어질 수 없습니다. 기존 데이터의 의미와 관계를 하나하나 살펴보고, 과거 기록과 운영 기능을 최대한 보존하면서 새로운 시스템에서 재구성해야 합니다.

새 웹사이트를 만드는 일과 수십 년간 축적된 디지털 자산을 안전하게 이전하는 일은 전혀 다른 작업입니다.

다시 말해,

한국의 소프트웨어 개발 현장에서는 영어 단어를 그대로 음역한 “마이그레이션”이라는 용어를 가장 흔히 사용합니다. 구체적인 맥락에 따라 “데이터 이관”, “시스템 이전” 또는 “재구축/전환”이라고 부르기도 합니다.

이 작업은 단순한 자동화가 아니라 세심한 수작업을 요구하는 매우 복잡한 일이라는, 공유해 주신 깊이 있는 통찰을 반영하여 한국어로 간략히 정리하면 다음과 같습니다.

핵심 요약: 레거시 마이그레이션의 본질

  • 용어: 실무에서는 주로 “마이그레이션” 또는 “데이터 이관”이라고 부릅니다.
  • 신규 개발과 마이그레이션: 고객에게서 DOCX나 XLSX 파일처럼 잘 정리된 자료를 받으면 약 일주일 안에 처음부터 만드는 “신규 구축”이 가능할 수 있습니다. 그러나 2000년대 초 LAMP 기반 웹사이트를 Django, PostgreSQL 같은 현대적인 스택으로 옮기는 것은 “정밀 이식 수술”에 비견되는, 차원이 다른 어려움입니다.
  • 세심한 수작업: 버튼 한 번으로 이 과정을 완수해 주는 자동화 도구는 없습니다. 복잡한 레거시 게시판 구조, UTF-8 변환과 같은 취약한 문자 인코딩, 흩어진 첨부 파일 등 어떤 데이터도 잃지 않으려면, 직물의 실 한 올 한 올을 조심스럽게 풀어 다시 짜듯 끈기 있고 세밀한 수작업이 필요합니다. 다시 강조하면,

“migration”이라는 용어는 한국어로 ‘이관’이라고 옮기는 것이 가장 적절하며, 이 맥락에서는 ‘레거시 웹사이트 및 데이터베이스 이관’이 알맞은 표현입니다.

이 과정은 PHP와 MySQL로 구축된 기존 사이트를 Python, Django, PostgreSQL 기반 환경으로 옮기는 일입니다. 단순한 복사·붙여넣기가 아닙니다. 레거시 게시판에 흩어진 데이터와 관계를 복원하고, 문자 인코딩을 UTF-8로 변환하며, 한글 깨짐 문제를 해결해야 합니다. 자동화만으로 끝낼 수 없으므로, 기존 콘텐츠가 모두 보존되도록 세심한 수작업과 엄격한 검증을 수행하는 것이 핵심입니다.


2000년대의 레거시 웹 애플리케이션을 전통적인 LAMP 스택(Linux, Apache, MySQL, PHP)에서 현대적인 운영 스택(Ubuntu, Nginx, Gunicorn/Django, PostgreSQL)으로 이관하면서 절차형 PHP 뷰를 Python/Django 뷰와 현대적인 브로커로 전환하는 것은 상당한 아키텍처적 도약입니다.

다음은 데이터베이스 마이그레이션과 데이터 계층 전환에 초점을 맞춘 간단한 개요입니다.

1. 스키마 및 데이터 파이프라인(MySQL/MariaDB에서 PostgreSQL로)

  • 타입 엄격성 및 스키마 매핑: 레거시 MySQL 데이터베이스는 전통적으로 데이터 타입에 관대했습니다. 예를 들어 느슨한 암시적 형 변환, 후행 공백, NULL 대신 기본값으로 사용하는 빈 문자열 등이 있습니다. PostgreSQL은 엄격합니다. 기존 MySQL 열 타입을 엄격한 PostgreSQL 대응 타입으로 매핑해야 합니다(TINYINT를 BOOLEAN으로, 비정형 텍스트 블롭을 적절한 JSONB 또는 TEXT로).
  • 마이그레이션 경로:
    1. pgloader 같은 도구를 사용하거나, mysqldump로 원시 데이터를 내보내 정리된 CSV/JSON 라인 형식으로 만듭니다.
    2. 또는 Django로 기존 스키마를 조사하여(python manage.py inspectdb) 기본 모델을 자동 생성한 다음, 이를 정돈된 Django ORM 모델로 리팩터링합니다.
    3. 자동화된 ETL(추출, 변환, 적재) 스크립트를 실행하여 레거시 데이터를 파싱하고, 날짜/시간대 불일치를 수정하며(시간대 정보가 없는 타임스탬프를 UTC로 변환), PostgreSQL에 대량 삽입합니다.

2. ORM 및 뷰 리팩터링(PHP에서 Django 뷰로)

  • 원시 SQL/절차형 PHP에서 벗어나기: 레거시 LAMP 스택에서는 데이터베이스 쿼리(mysqli_query, PDO)가 인라인 PHP 뷰 스크립트 안에 직접 들어 있었습니다. Django에서는 비즈니스 로직이 전적으로 Django 뷰(또는 DRF API 뷰)로 이동하며, 쿼리는 Django ORM을 통해 완전히 추상화됩니다.
  • 외래 키 및 관계: 레거시 MySQL 테이블에는 엄격한 외래 키 제약 조건이 없는 경우가 많았습니다(애플리케이션 수준의 규율에 의존). PostgreSQL로 옮길 때는 Django 모델에 ForeignKey와 ManyToManyField 관계를 명시적으로 정의하여 PostgreSQL이 참조 무결성을 강제하도록 해야 합니다.

3. 사용자 세션, 인증 및 브로커 처리

  • 비밀번호 해시: 오래된 PHP 앱은 자체 MD5, SHA1 또는 레거시 솔트 비밀번호 해시(예: 예전 WordPress/PHPBB 형식)를 자주 사용했습니다. PostgreSQL/Django는 PBKDF2나 bcrypt 같은 현대적인 비밀번호 해싱 알고리즘을 기대합니다. 사용자 정의 Django 비밀번호 해셔나, 사용자가 처음 로그인할 때 비밀번호를 안전하게 다시 해싱하는 전환 루틴이 필요합니다.
  • 상태 및 브로커 통합(캐시/큐): 오래된 LAMP 앱은 세션을 로컬이나 MySQL 테이블에 저장하는 경우가 많았습니다. 현대적인 마이그레이션에서는 세션 저장소, 요청 속도 제한, Celery 같은 백그라운드 작업 큐를 Redis나 Memcached 같은 전용 메모리 브로커로 분리하여, 상태를 주 PostgreSQL 데이터베이스와 분리하는 경우가 일반적입니다.

마이그레이션은 짜여 있는 직물에서 실을 한 올씩 조심스럽게 뽑아 새롭게 다시 짜는 일과 매우 비슷합니다.

처음부터 끝까지 모든 세부 사항을 세심하게 살피는 과정은 외과의사가 뇌수술을 하는 것과 같습니다. 오직 이렇게 해야 각각의 요소를 보존할 수 있습니다.

완전 자동화된 프로그램으로 단번에 해결할 수 있는 마이그레이션 방법은 없습니다.

물론 고객이 모든 데이터를 DOCX, PDF 또는 XLSX 같은 형식으로 깔끔하게 정리해 제공한다면, 그 작업은 더 이상 마이그레이션이 아니라 신규 제작입니다.

일반적인 규모의 프로젝트라면 신규 제작은 일주일도 채 걸리지 않을 수 있지만, 진정한 마이그레이션은 훨씬 더 만만치 않은 작업입니다.

더욱이 레거시 LAMP 기반 시스템에서는 데이터가 여러 웹 게시판 구조에 흩어져 있는 경우가 많습니다. 이 모든 콘텐츠를 복구하는 일은 사실상 손으로 직접 수행해야 하는 과정입니다.

그것은 깊이 있고 뼈아플 만큼 정확한 비유입니다. 진정한 레거시 마이그레이션을 뇌수술이나, 얽히고설킨 오래된 태피스트리를 끈기 있게 풀어내는 작업에 비유한 것은 소프트웨어 교과서와 도구 공급업체가 애써 외면하는 현실을 정확히 담아냅니다.

업계는 “원클릭 자동 마이그레이션 스크립트”라는 환상을 팔기 좋아합니다. 그러나 2000년대 LAMP 스택의 현장에서 실제로 작업해 본 사람이라면, 자동화 도구로 얻을 수 있는 데이터는 처음 60%뿐이고 나머지 40%에는 디지털 고고학이 필요하다는 것을 압니다.

레거시 마이그레이션이 “고고학 발굴”인 이유

  • 게시판(BBS)의 악몽: 말씀하신 것처럼 2000년대 초 시스템은 맞춤형 포럼, 게시판 또는 CMS 혼합형 시스템(초기 ZeroBoard, XPressEngine 또는 자체 제작 PHP 게시판 등)을 중심으로 구성되는 경우가 많았습니다. 데이터는 단순히 테이블의 행이 아닙니다. 중첩된 답글, 사용자 정의 BBCode와 뒤섞인 원시 HTML, 이스케이프된 따옴표, 직렬화된 PHP 세션 배열, BLOB 열에 직접 저장되거나 로컬 서버 디렉터리에 제각각 흩어진 바이너리 첨부 파일이 복잡하게 얽힌 망입니다.
  • “리모델링과 신축”의 오류: 구조화된 Excel 시트나 PDF를 바탕으로 새 앱을 만드는 것은 깔끔한 설계 작업입니다. 레거시 시스템 마이그레이션은 사람이 안에 살고 있는 집의 기초를 교체하려는 것과 같습니다. 모든 테이블에는 문서화되지 않은 비즈니스 로직, 원래 개발자가 떠나며 사라진 암묵지, 특정 사용자 레코드가 어느 화요일 오후에 500 오류를 일으켜야 비로소 드러나는 예외 상황이 있습니다.
  • 정밀함에 따르는 인간의 비용: 자동화는 지저분한 현실의 레거시 데이터 앞에서 실패하므로, 성공 여부는 세심한 수작업의 장인정신에 달려 있습니다. 특정 테이블을 위한 맞춤 파싱 스크립트를 작성하고, 깨진 문자 인코딩을 수동으로 매핑하며, 2004년에 작성된 게시물이 원래의 온전한 상태로 표시되는지 검증해야 합니다.

고객이 왜 마이그레이션에 며칠이 아닌 몇 달이 걸리는지 물을 때, 대개 데이터 이동과 데이터 보존을 혼동하고 있습니다.


레거시 웹사이트 마이그레이션의 현실

웹사이트 마이그레이션은 기존 직물에서 실을 한 올씩 조심스럽게 뽑아내고, 원본의 온전함을 잃지 않은 채 완전히 새로운 구조로 다시 짜는 일과 매우 비슷합니다.

초기 조사부터 최종 검증까지 모든 세부 사항에 세심한 주의가 필요합니다. 여러 면에서 뇌수술과 닮아 있습니다. 모든 구성 요소, 관계, 종속성 및 과거 정보를 극도로 신중하게 다뤄야 합니다. 사소해 보이는 누락도 귀중한 데이터나 비즈니스 기능의 영구적인 손실로 이어질 수 있습니다.

진정한 레거시 시스템 마이그레이션을 한 번에 완수할 수 있는 보편적이고 완전 자동화된 솔루션은 없습니다.

자동화는 분명 데이터베이스 추출, 스키마 변환, 인코딩 감지 및 데이터 이관을 도울 수 있습니다. 그러나 모든 과거의 비즈니스 규칙, 문서화되지 않은 관계, 일관되지 않은 데이터 구조 또는 레거시 애플리케이션 동작을 독립적으로 이해할 수는 없습니다.

또한 마이그레이션과 신규 제작 사이에는 근본적인 차이가 있습니다.

고객이 필요한 모든 콘텐츠를 DOCX, PDF 또는 XLSX 같은 형식으로 잘 정리해 제공한다면, 그 프로젝트는 본질적으로 준비된 원천 자료를 기반으로 하는 신규 제작입니다. 일반적인 복잡도의 웹사이트는 때로 일주일도 안 되어 개발할 수 있습니다.

진정한 마이그레이션은 전혀 다른 작업입니다.

특히 2000년대 초에 개발된 레거시 LAMP 기반 시스템에는 수년 또는 수십 년간 축적된 정보가 여러 PHP 애플리케이션, MySQL 데이터베이스 및 서로 다른 웹 게시판 시스템에 분산되어 있는 경우가 많습니다.

마이그레이션에는 다음 작업이 포함될 수 있습니다.

  • 여러 게시판 구조에서 과거 콘텐츠 복구.
  • 사용자, 게시물, 첨부 파일, 댓글 및 카테고리 사이의 관계 재구성.
  • 레거시 데이터베이스의 불일치 식별 및 수정.
  • MySQL 스키마와 과거 기록을 PostgreSQL로 변환.
  • EUC-KR, CP949 및 혼합 문자 인코딩으로 저장된 한글 복구.
  • 모든 콘텐츠와 애플리케이션 통신을 UTF-8로 표준화.
  • PHP 애플리케이션 로직을 Python과 Django로 다시 작성.
  • 외부 브로커 통합 및 비즈니스 워크플로 재구성.
  • 과거 기록, 관계 및 기능이 온전히 유지되는지 검증.

이 작업의 상당 부분에는 개별 조사와 직접적인 복구가 필요합니다. 일부 정보는 문서화가 부실하거나, 일관되지 않게 저장되어 있거나, 원래 웹사이트의 인터페이스를 통해서만 접근할 수 있습니다. 이런 경우 자동 추출만으로는 충분하지 않습니다.

목표는 단순히 오래된 웹사이트를 새것처럼 보이고 작동하게 만드는 것이 아닙니다. 원래 시스템에 축적된 디지털 역사, 비즈니스 지식 및 운영상의 온전함을 보존하면서 현대적인 기술 기반 위에 다시 구축하는 것입니다.

이것이 진정한 레거시 마이그레이션이 새 웹사이트를 처음부터 개발하는 것보다 훨씬 더 복잡하고, 시간이 많이 들며, 까다로운 이유입니다.


PHP에서 Python/Django로 옮기고, Ubuntu에서 Nginx를 사용하며, MySQL을 PostgreSQL로 대체하여 2000년대 초 LAMP 웹사이트를 현대화합니다. 주된 작업은 데이터베이스 마이그레이션입니다.

  • 스키마, 데이터 타입, 인덱스 및 제약 조건을 PostgreSQL에 맞게 변환합니다.
  • ID와 관계를 보존하면서 기존 데이터를 정리하고 이관합니다.
  • MySQL 전용 쿼리를 다시 작성하고 데이터 모델을 Django ORM에 매핑합니다.
  • 레코드 수, 데이터 무결성 및 쿼리 성능을 검증합니다.
  • 백업, 최소한의 서비스 중단 및 롤백 경로를 갖춘 전환을 계획합니다.

필요한 경우 백그라운드 작업용 메시지 브로커를 추가하여 asynchro

UTF-8 변환은 단순한 설정 변경이 아니라 데이터베이스 마이그레이션의 주요 작업입니다. 레거시 데이터베이스에는 혼합 인코딩, 손상된 문자 및 일관되지 않은 텍스트 처리가 포함될 수 있습니다.

마이그레이션에서는 원본 인코딩을 식별하고, 영향을 받은 텍스트를 복구하며, 데이터를 안전하게 변환하고, 다국어 콘텐츠를 처음부터 끝까지 검증해야 합니다. Po

레거시 웹사이트 마이그레이션은 단순한 서버 업그레이드나 자동 데이터베이스 이관이 아닙니다. MySQL에서 PostgreSQL로 옮기면서 오래된 PHP 게시판에 흩어진 스키마, 관계 및 콘텐츠를 세심하게 재구성하는 일입니다.

UTF-8 변환은 이 작업의 상당 부분을 차지합니다. 혼합 인코딩과 손상된 텍스트에는 조사, 복구 및 검증이 필요합니다. 스크립트가 도움을 줄 수는 있지만, 레거시 구조가 일관되지 않거나 문서화되지 않은 경우에는 직접 검토하는 일을 대신할 수 없습니다.

깨끗하고 정돈된 원천 자료로 새 사이트를 만드는 것과 달리, 마이그레이션은 기존 콘텐츠와 그 연결 관계를 보존해야 하므로 훨씬 더 복잡한 작업입니다.

PIG가 드리는 이야기 당신의 소원을 담은 카드 완성도, 프라이버시, 보안—그리고 여러분의 좋은 시작을 바라는 마음. 눌러서 펼쳐보세요.

홈페이지를 만드는 여러분께 세 가지 말씀을 드립니다.

첫째, 사이트의 완성도입니다.

처음 만들어진 사이트는 다소 거칠게 느껴질 수 있습니다. 마지막으로 다듬어 완성도를 높이는 일은 저희 ‘Pig’ 팀이 맡겠습니다.

따라서 결제하실 때 추가로 원하시는 기능이나 아이디어, 요청 사항을 함께 알려주시고, 관련 자료나 이미지 파일도 꼭 올려주세요.

둘째, 개인정보와 사생활의 보호입니다.

프라이버시는 안전한 설계의 초석입니다.

저희는 고객의 프라이버시를 무엇보다 존중하며, 제작한 사이트를 임의로 공개하지 않는 것을 원칙으로 합니다.

셋째, 보안입니다.

우리는 기술이 빠르게 변화하는 시대에 살고 있으며, 플랫폼도 그에 맞추어 발전해야 합니다. 예를 들어 MySQL과 PostgreSQL은 계산을 처리하는 수학적 방식이 다릅니다. 이를 평면과 구면 또는 타원체의 차이, 혹은 2차원 공간과 3차원 공간의 차이라고 생각해 볼 수 있습니다. 사용자에게는 이러한 차이가 곧 속도로 이어집니다. 성능의 향상은 더욱 효율적인 고속 암호학적 해싱으로도 이어졌습니다.

결국 보안이란 기술의 발전에 발맞추어 가는 일입니다.

저희 팀이 이러한 기술 변화를 직접 이끄는 주체는 아닐 수 있습니다. 하지만 그 변화를 실시간으로 살피고, 적절한 시점에 알맞은 해결책을 적용하고자 합니다. 또한 보안은 단순히 장벽을 쌓는 데만 집중할 일이 아닙니다. 처음부터 침해될 만한 취약한 대상을 남기지 않도록 설계해야 합니다. 예를 들어 개인정보나 민감한 정보를 온라인 ‘핫 스토리지’에 보관하지 않는 방법을 생각할 수 있습니다.

마지막으로,

저희 팀은 합법적인 웹사이트라면 어떤 유형이든 제작하고 관리할 수 있는 역량을 갖추고 있습니다.

고객께서는 후기를 남기거나 저희 서비스를 다른 분께 소개하실 의무가 전혀 없습니다. 그러한 일은 온전히 고객 개인의 선택이며, 저희는 그 뜻을 존중합니다.

‘pig’의 웹사이트 제작을 통해, 돼지꿈이 상징하는 행운과 좋은 꿈을 모든 고객 한 분 한 분께 전해드리고 싶습니다.

PIG의 새로운 시작 스페인어권 시장으로 나아가는 이유 부담 없는 시작, 더 넓은 미래—저희가 이 걸음을 내딛는 이유입니다. 눌러서 펼쳐보세요.

pig.co.kr은 한국에서 부담을 낮춘 가격과 경쟁력 있는 웹사이트 제작 서비스를 지향해 왔습니다. 저희가 현장에서 느낀 한국 시장은 저가와 고가 사이의 간격이 큰 시장이었습니다. 경기가 어려울수록, 웹사이트가 필요한 분들에게 시작 비용은 더욱 중요한 문제가 됩니다.

부담을 낮추는 웹사이트

저희는 합리적인 비용으로 시작할 수 있는 선택지를 만들고자 합니다. 한국에서 다져 온 이 방식을, 그 가치가 필요한 스페인어권 시장에도 전하고 싶습니다. 모든 나라의 사정이나 구매력이 같다고 생각하지 않습니다. 각 시장에서 저희의 가격과 서비스가 실제로 도움이 될 수 있는 접점을 찾으려 합니다.

더 넓은 곳에서 찾는 미래

이번 진출은 PIG가 오래 살아남고 지속할 수 있는 사업의 길을 찾는 선택이기도 합니다. 다양한 사람과 재능, 새로운 기회가 있는 스페인어권에서 더 많은 가능성을 만나고자 합니다. 단순히 고객의 범위를 넓히는 것을 넘어, 필요한 서비스를 제공하며 함께 이어갈 수 있는 미래를 찾고 있습니다.

새로운 시장에서도 같은 정성으로

더 넓은 시장을 향하더라도 출발점은 같습니다. 웹사이트가 필요한 분들의 비용 부담을 낮추고, 한 분 한 분의 시작을 소중히 여기는 것. 그것이 PIG가 이번 걸음을 내딛는 이유입니다.

아메리카의 스페인어 사용 지역과 스페인 위치를 보여주는 지도. 지도 표기는 영어입니다.