정하윤 개발자

사람들이 불편해하는 일을 조금 더 편하게 만들고 싶은 학생 개발자입니다.

초등학교 1학년 때 엔트리로 코딩을 시작했습니다. 모르는 걸 찾아보고, 제 손으로 무언가를 만드는 게 재미있어서 지금도 개발하고 있습니다.

소개

찾아보고, 직접 만드는 게 재미있었습니다.

초등학교 1학년 때 엔트리로 처음 코딩을 해 봤습니다. 초등학교 5학년 때는 처음으로 제 앱을 만들었고, HTML로 홈페이지도 만들었습니다. 그때는 AI의 도움 없이 인터넷과 책을 찾아가며 혼자 만들었습니다. 모르는 게 나오면 다시 찾아보고 해 보는 과정이 저는 재미있었습니다. 그렇게 알아낸 걸로 제가 만들고 싶던 것을 완성하는 게 좋았습니다.

01

프론트엔드부터 배포까지

화면, API와 데이터베이스를 연결하고 Docker와 Nginx로 서버에 배포했습니다.

FULL-STACK
02

오류를 재현하고 기록합니다

서비스 로그를 확인하고 문제가 발생한 조건을 다시 만들어 원인을 찾습니다.

OPERATIONS
03

웹 보안을 중심으로 설계합니다

Burp Suite로 요청을 분석하고 인증, 권한, 입력값 검증에서 발생할 수 있는 문제를 점검합니다.

WEB SECURITY

개발을 시작한 뒤 지금까지

처음에는 제가 만든 게 움직이는 것만으로도 좋았습니다. 이제는 다른 사람이 써 보고 “이거 덕분에 편해졌다”고 말해 주는 걸 만들고 싶습니다.

컴퓨터와 친해지다

컴퓨터를 보면 직접 만져 보고 기능을 찾아보는 것을 좋아했습니다. 자연스럽게 디지털 도구를 익히고, 나만의 무언가를 만드는 일에 관심을 갖게 됐습니다.

엔트리로 처음 해 본 코딩

엔트리로 코딩을 시작했습니다. 제가 만든 대로 화면이 움직이는 게 재미있었습니다.

처음 만든 내 앱과 홈페이지

처음으로 제 앱을 만들고, HTML로 홈페이지도 만들었습니다. 인터넷과 책을 찾아가며 혼자 만들었는데, 하나씩 알아내서 직접 만드는 과정이 재미있었습니다.

더 깊은 언어와 프로젝트 학습

한 단계 더 나아간 프로그래밍 언어를 배우고, 중학교에 진학한 뒤에도 웹 개발과 서버, 다양한 프로젝트 구현을 계속 확장했습니다.

YSC 우수상 수상

Arduino 기반 미세먼지 측정 시스템으로 한국과학창의재단이 주최한 청소년과학탐구대회(YSC)에 참가해 우수상을 수상했습니다.

웹 보안 전문성 강화

웹 요청과 인증 구조를 분석하고 취약점이 생기는 원인과 안전한 구현 방법을 함께 익히며, 보안을 기본으로 갖춘 서비스를 만들고 있습니다.

프로젝트

API SECURITY · PERSONAL비공개

AegisFlow

인증, 요청 제한, 이상 패턴 기록을 하나의 흐름으로 관리하는 API 보안 게이트웨이입니다.

문제 상황
서비스마다 인증과 요청 제한을 반복 구현하면 정책이 조금씩 달라지고, 수정 사항을 놓쳐 보안 수준이 흔들릴 수 있다고 판단했습니다.
시도와 고민
처음에는 각 API에 검증 코드를 추가했지만 중복이 늘어났습니다. 공통 흐름을 미들웨어로 분리하고, 경로·IP별 정책을 설정으로 관리하는 방식으로 바꿨습니다.
해결과 결과
JWT 검증, 요청 제한, 정책 설정과 차단 사유를 한 계층에서 처리했습니다. Redis로 여러 서버의 요청 횟수를 공유하고, 차단 이유는 구조화된 로그로 남겼습니다.
배운 점과 다음 단계
보안은 차단 기능을 추가하는 일보다 정상 사용자를 해치지 않는 기준을 만드는 일이 중요했습니다. 예외 정책과 요청 분석 화면을 보완하고 있습니다.
TypeScriptNode.jsRedisSecurity

INFRASTRUCTURE · PERSONAL비공개

OrbitOps

여러 리눅스 서버의 배포 상태와 장애 기록, 롤백 흐름을 한 화면에서 관리하는 운영 플랫폼입니다.

문제 상황
서버마다 접속해 상태와 로그를 확인하는 방식에서는 장애가 시작된 위치와 배포 진행 상황을 빠르게 파악하기 어려웠습니다.
시도와 고민
단순 상태 조회만으로는 원인을 알 수 없어 배포 단계와 오류 로그를 함께 보여 주기로 했습니다. 실시간성과 서버 부담 사이의 균형도 고려했습니다.
해결과 결과
서버 에이전트가 상태·배포 이벤트를 전송하고 대시보드가 이를 실시간으로 보여 주도록 구성했습니다. Go와 WebSocket으로 동시 연결과 상태 전달을 분리했습니다.
배운 점과 다음 단계
운영 화면은 정보가 많기보다 지금 확인해야 할 상태가 명확해야 했습니다. 단절 후 누락 이벤트 복구와 안전한 롤백 과정을 검증하고 있습니다.
GoLinuxDockerWebSocket

IOT · TEAMYSC 우수상

학교 미세먼지 측정·표시 시스템

기상청 API와 학교에서 직접 측정한 미세먼지 값을 비교·검증한 뒤, 신뢰할 수 있는 정보만 학교 전광판에 표시하는 Arduino 기반 IoT 시스템입니다.

프로젝트 배경
학교 구성원이 매일 확인하는 미세먼지 정보를 더 가까운 곳에서 신뢰도 있게 제공하고자 했습니다. 한국과학창의재단 주최 청소년과학탐구대회(YSC)에 출품해 우수상을 수상했습니다.
구현
Arduino에 미세먼지 센서와 Wi-Fi 모듈을 연결해 교내 측정값을 수집하고, 기상청 API 값도 함께 가져왔습니다. 두 데이터는 학교 서버에서 처리한 뒤 학교 전광판으로 전달했습니다.
검증 로직
외부 API 값과 학교 측정값이 일정 기준 안에서 비슷할 때만 전광판에 표시하도록 구성했습니다. 한쪽 데이터만 맹신하지 않고, 실제 현장 값과 공공 데이터를 함께 확인하는 흐름을 설계했습니다.
배운 점
센서, 네트워크, 서버, 화면은 각각 동작하는 것만으로 충분하지 않았습니다. 데이터가 어떻게 수집되고 비교되어 사용자에게 전달되는지 전체 흐름을 설계하는 경험을 얻었습니다.
ArduinoFine Dust SensorWi-FiWeather APIIoT

DEVELOPER TOOL · PERSONAL비공개

DevVault

API 키와 환경 변수를 로컬에서 암호화해 보관하고 필요한 실행 환경에 안전하게 주입하는 CLI 도구입니다.

문제 상황
.env 파일 복사와 메신저 공유 과정에서 비밀값이 기록에 남고, 어떤 키가 아직 유효한지 알기 어려운 점을 개선하고 싶었습니다.
시도와 고민
프로젝트마다 별도 파일을 두는 방식은 사용성이 좋지 않았습니다. 암호화된 저장소와 프로젝트 설정을 분리하고, 필요한 순간에만 값을 주입하는 흐름을 설계했습니다.
해결과 결과
키 등록·조회·실행 환경 주입·폐기 명령을 만들고 Rust와 AES-256-GCM으로 암호문 변조 검증까지 고려했습니다.
배운 점과 다음 단계
비밀값 관리는 암호화만으로 끝나지 않고 사용 흐름 전체의 문제였습니다. 접근 정책, 만료 알림, 백업 복구와 명령 기록을 계속 점검하고 있습니다.
RustAES-256-GCMCLISQLite

WINDOWS UTILITY · PERSONAL공개

CrashLens

Windows 프로그램의 충돌과 멈춤을 정리하고, 실행 중 새 충돌이 기록되면 알림으로 알려주는 데스크톱 도구입니다.

충돌 기록 확인
Windows 이벤트 로그에서 프로그램별 충돌 시간, 오류 모듈과 예외 코드를 모아 보여 줍니다. 원본 메시지와 XML도 확인할 수 있습니다.
새 충돌 알림
트레이에서 실행되는 동안 새 충돌이 기록되면 알림을 표시합니다. 알림을 누르면 최근 충돌 목록을 열어 확인할 수 있습니다.
WindowsEvent LogDesktop
GitHub에서 보기

사용해 본 기술

프로젝트에서 직접 사용한 도구만 적었습니다.

C
C++
Python
JavaScript
TypeScript
Java
Go
Rust
PHP
Kotlin
Dart
Bash
BackendNode.js · Python · Go · Java

REST API, 봇, 데이터 처리와 서버 프로그램

FrontendJavaScript · TypeScript · React

웹 화면, 관리 도구와 실시간 상태 표시

DataRedis · SQL · SQLite

캐시, 요청 제한과 관계형 데이터 저장

InfrastructureLinux · Docker · Nginx

서버 배포, HTTPS, 로그 확인과 롤백

SecurityBurp Suite · Auth · Validation

요청 분석, 인증·권한과 입력값 점검

프로젝트를 진행하는 순서

필요한 기능을 정리하고 첫 버전을 만든 뒤, 직접 사용하면서 발견한 문제를 수정합니다.

01 / DEFINE

문제를 좁힙니다

사용자와 상황, 해결해야 할 한 가지 문제를 문장으로 정리합니다. 꼭 필요한 흐름이 아니면 첫 버전에서 제외합니다.

02 / BUILD

끝까지 연결합니다

화면만 만드는 데서 멈추지 않고 API, 데이터, 인증과 배포 환경까지 실제로 사용할 수 있는 상태로 연결합니다.

03 / VERIFY

실패를 먼저 확인합니다

잘못된 입력, 권한 부족, 외부 API 오류와 서버 재시작처럼 정상 흐름 밖의 상황을 직접 재현해 봅니다.

04 / IMPROVE

운영하며 고칩니다

로그와 사용자 반응을 바탕으로 막히는 지점을 찾습니다. 수정한 이유와 영향을 기록해 다음 변경이 쉬운 구조로 만듭니다.

어떤 개발자가 되고 싶냐면

제가 만든 걸 쓰고 “이거 덕분에 편해졌다”고 말해 주는 사람이 있으면 좋겠습니다. 사람들이 어떤 일을 번거로워하는지 듣고, 제가 만들 수 있는 것으로 조금씩 바꿔 보고 싶습니다. 혼자 찾아보고 만드는 재미로 시작했지만, 앞으로는 누군가에게 도움이 되는 걸 만드는 개발자가 되고 싶습니다.

불편한 일을 줄이는 도구

매번 손으로 반복해야 하는 일이나 쓰기 번거로운 기능에 관심이 있습니다. 작은 도구라도 실제로 쓰는 사람의 수고를 덜어 주면 좋겠습니다.

안심하고 쓸 수 있는 서비스

편하게 쓸 수 있어도 보안에 문제가 있으면 곤란하다고 생각합니다. 인증이나 입력값 처리처럼 기본적인 부분부터 제대로 배우고 싶습니다.

만든 뒤에도 돌보는 일

만들고 나서도 잘 돌아가는지 확인하고, 고장 나면 원인을 찾아 고칠 수 있고 싶습니다. 그래서 서버 운영과 로그 보는 법도 공부하고 있습니다.

다른 사람과 함께 만들기

혼자 찾다 보면 생각이 막힐 때도 있습니다. 다른 사람의 의견을 듣고 제가 생각하지 못한 방법도 배우면서 함께 만들어 보고 싶습니다.

함께할 프로젝트를 찾고 있습니다

주제와 필요한 역할이 정리되어 있다면 초기 기획부터 구현, 배포까지 함께할 수 있습니다. 특히 짧은 시간 안에 작동하는 첫 버전을 만들고 계속 개선하는 프로젝트를 좋아합니다.

해커톤

문제를 빠르게 정의하고 꼭 필요한 기능을 골라 발표 가능한 MVP까지 구현합니다. 프론트엔드와 백엔드 사이의 빈 부분을 연결하는 역할을 맡을 수 있습니다.

MVP · Full-stack · Demo

보안 프로젝트

웹 서비스의 공격 표면을 살펴보고 인증과 권한, 입력값 처리, 서버 설정에서 발생할 수 있는 문제를 분석합니다. 취약점을 찾는 것뿐 아니라 수정 방향까지 함께 고민합니다.

Web Hacking · Linux · Audit

서비스 개발

관리 도구, 자동화, 커뮤니티, 봇처럼 실제 사용자가 있는 서비스를 기획하고 개발합니다. 요구사항 정리부터 API, 데이터베이스, 배포와 운영까지 전체 흐름을 볼 수 있습니다.

Product · API · Operations

외주·협업

원하는 결과와 우선순위를 먼저 정리하고, 진행 상황을 공유하며 수정 가능한 형태로 작업합니다. 유지보수하기 어렵거나 설명할 수 없는 코드는 남기지 않는 것을 중요하게 생각합니다.

Planning · Delivery · Support

자주 묻는 질문

개발을 시작한 계기부터 프로젝트를 진행하는 방식까지, 포트폴리오만으로는 알기 어려운 내용을 정리했습니다.

언제부터 개발을 시작했나요?

초등학교 1학년 때 엔트리로 시작했습니다. 초등학교 5학년 때 처음으로 제 앱을 만들고 HTML로 홈페이지도 만들었습니다. 그때는 AI 도움 없이 인터넷과 책을 찾아보며 혼자 만들었고, 모르는 걸 알아내서 직접 만드는 게 재미있었습니다.

어떤 프로젝트에 가장 관심이 있나요?

누군가 귀찮거나 불편하다고 느끼는 일을 줄여 주는 프로젝트가 좋습니다. 규모가 작더라도 실제로 써 보고 편해졌다는 말을 들을 수 있는 걸 만들고 싶습니다.

프로젝트를 시작할 때 무엇을 먼저 보나요?

어떤 점이 불편한지부터 들어 봅니다. 꼭 필요한 기능부터 만들어 보고, 직접 써 보면서 빠진 부분을 고치려고 합니다.

배포 이후에는 무엇을 하나요?

직접 써 보면서 이상한 부분을 찾고 로그도 확인합니다. 문제가 생기면 같은 상황을 다시 만들어 보고, 왜 그런지 찾아서 고칩니다.

웹 보안은 어떻게 공부하고 있나요?

웹 요청이 어떻게 오가는지 살펴보고 인증이나 권한 확인이 빠지면 어떤 문제가 생기는지 공부합니다. 문제를 찾으면 어떻게 고쳐야 하는지도 같이 확인합니다.

AI는 개발할 때 얼마나 사용하나요?

지금은 AI도 거의 매일 씁니다. 반복되는 코드나 막힌 부분을 정리할 때 도움을 받지만, 나온 코드를 그대로 넣지는 않습니다. 어떻게 동작하는지 확인하고 제가 이해한 뒤에 사용하려고 합니다.

어떤 개발자가 되고 싶나요?

제가 만든 걸 쓰는 사람이 “이거 덕분에 편해졌다”고 말해 주면 좋겠습니다. 혼자 알아내서 만드는 것도 재미있지만, 그 결과가 누군가에게 도움이 된다면 더 좋을 것 같습니다.

연락하기

만들고 싶은 것이 있다면 편하게 이야기해 주세요.