About this projectService-style portfolio page

서비스인척 하는 공개형 포트폴리오 페이지

이 프로젝트는 서비스 운영 자체보다, 작동하는 웹 제품과 설명 가능한 구조 설계를 통해 구현 역량과 운영 설계 능력을 드러내는 것을 목적으로 합니다. 메인 페이지는 국가 랜덤 추첨 서비스처럼 보이도록 구성하고, About 페이지에서만 데이터 기준과 구조적 의도를 설명합니다.

프로젝트 목적

Why this exists

이 페이지의 외형은 웹 서비스에 가깝지만, 실제 목적은 포트폴리오형 공개 페이지입니다.

단순 기능 시연이 아니라, 데이터 기준 수립, 기능 설계, UI 구성, 운영 구조 분리, 보안 노출 최소화까지 포함한 전체 구조를 보여주는 데 의의가 있습니다.

서비스 정의

Core service

국가 데이터를 기반으로 특정 기준에 따라 국가를 랜덤 추첨하는 웹 서비스입니다.

추첨 방식은 단순 랜덤이 아니라 인구 및 출생 통계값을 사용할 수 있도록 설계되었습니다.

시각적으로는 세계지도와 결과 카드 중심의 화면으로 구성하여 사용자가 직관적으로 정보를 얻을 수 있도록 했습니다.

데이터 기준

Data sources and policy

국가 기준

국가 기준은 대한민국 외교부가 제공하는 데이터를 기준으로 하며, 예외로 북한을 별도로 추가

인구 및 출생 통계

국가의 인구 및 연간 출생아 수는 UN에서 제공하는 데이터를 기준으로 함

데이터 운영 방식

외부 API는 사용하지 않고, 내부 JSON 형태로 보관한 뒤 필요 시 수동 갱신

추첨 모드

Selection methodology

인구 비례

세계 인구 분포를 가장 직접적으로 반영하는 방식입니다. 각 국가의 총인구를 그대로 사용하여, 인구가 두 배인 국가는 확률도 두 배가 됩니다.

보정된 인구 비례

초대형 국가로 확률이 과도하게 쏠리는 현상을 줄이기 위한 방식입니다. 각 국가의 총인구를 그대로 사용하지 않고 제곱근으로 완화한 뒤, 전체 합에서 차지하는 비율만큼 추첨 확률을 계산함

연간 출생아 수 비례

'지금 당장 태어난다면'을 반영하는 방식입니다. 연간 출생아 수가 많을수록 확률이 높습니다.

보정된 연간 출생아 수 비례

연간 출생아 수 비례 방식의 오류를 보완한 방식입니다. UN의 데이터는 천 명 단위로 환산 되어있어 반올림(또는 버림)에 따라 0으로 집계되었고 이에 따라 확률이 0인 국가가 존재합니다. 0으로 집계된 국가는 확률 계산 단계에서만 499(0에서 999의 중앙값)만큼 가중치를 적용하여, 최소한의 확률을 부여했습니다.

운영 구조

Infrastructure layout

Web

Nginx 기반 외부 공개 진입점으로 HTTPS 종료 및 Reverse Proxy를 담당합니다.

App

국가 랜덤 추첨 로직과 서비스 화면 구동을 담당합니다.

Security

Suricata 및 로그 수집/분석 계층으로 기초 보안을 담당합니다.

제작자 및 연결

Creator note

이름이 김동현이라서 donghyun.kim 도메인입니다.