정하윤

불편을 발견하면 끝까지 해결하는,
제품과 보안을 함께 고민하는 개발자입니다.

“있으면 좋겠다”는 생각을 실제로 쓸 수 있는 서비스로 만듭니다. 화면을 구현하는 데서 멈추지 않고 API, 데이터, 서버와 보안까지 연결해 사용자가 편하게 쓰고 오래 믿을 수 있는 경험을 설계하고 있습니다.

작은 불편도 그냥 지나치지 않고,
끝까지 작동하는 해결책으로 바꿉니다.

아이디어를 실제 서비스로 연결합니다.
2021년 엔트리로 시작해 Python 자동화 도구, 카카오톡·디스코드 봇, 웹 서비스로 범위를 넓혔습니다. 화면을 만드는 데서 끝내지 않고 API, 데이터베이스, 인증, 배포 환경까지 직접 연결합니다. 누군가가 한 번 써 보고 끝내는 결과물보다, 반복해서 찾아도 불편하지 않은 흐름을 만드는 데 관심이 있습니다.

배포 이후의 문제까지 책임집니다.
예상하지 못한 사용자 입력과 서버 장애를 겪으며 로그, 예외 처리, 모니터링의 중요성을 배웠습니다. 오류를 재현하고 원인을 기록한 뒤 같은 문제가 반복되지 않도록 구조를 개선합니다. 기능을 출시하는 순간이 끝이 아니라, 실제 사용 속에서 더 나은 답을 찾아가는 시작이라고 생각합니다.

공격자의 관점으로 구현을 다시 봅니다.
인증과 권한, 입력값 검증, 세션과 서버 설정을 점검합니다. 취약점을 찾는 데서 그치지 않고 왜 발생했는지 추적해 안전한 코드와 운영 설정으로 연결합니다. 편리함과 안전성 중 하나를 포기하는 대신, 처음부터 둘을 함께 설계하는 개발자가 되고 싶습니다.

요구사항을 작동하는 결과로 바꿉니다.
외주와 CodeLab Team 활동에서 모호한 요청을 기능 단위로 정리하고, 우선순위를 합의해 첫 버전을 빠르게 공유했습니다. 피드백을 반영할 수 있는 구조와 설명 가능한 코드를 중요하게 생각합니다. 함께 일하는 사람이 다음 결정을 쉽게 내릴 수 있도록 맥락을 남기는 일도 개발의 일부라고 믿습니다.

RoleFull-stack Developer
FocusWeb · Security
EnvironmentLinux · Cloud
ApproachBuild · Run · Improve

지금의 정하윤

요즘은 이런 일을
하고 있습니다.

01

서비스 운영

CodeLab Team의 웹 서비스와 서버를 살펴보며 배포, 로그 확인, 오류 대응 과정을 직접 경험하고 있습니다.

02

웹 보안 공부

요청과 응답을 직접 분석하고 인증, 권한, 입력값 처리에서 문제가 생기는 이유를 코드와 함께 공부합니다.

03

작은 도구 만들기

반복되는 작업이나 관리하기 불편한 과정을 발견하면 먼저 작은 버전으로 만들고 실제로 사용하며 고칩니다.

배우고, 만들고, 운영하며
한 단계씩 넓혀 왔습니다.

처음에는 코드를 실행했을 때 화면이 바뀌는 것만으로도 재미있었습니다. 지금은 제가 만든 서비스가 실제 사람에게 어떤 도움을 주는지, 그리고 안전하고 안정적으로 계속 사용할 수 있는지를 더 중요하게 생각합니다.

엔트리로 개발 시작

블록 코딩으로 처음 프로그램을 만들었습니다. 아이디어를 직접 움직이는 결과물로 바꿀 수 있다는 점에 빠져 개발을 계속 공부하게 됐습니다.

Python과 자동화 도구 제작

반복되는 작업을 줄이는 스크립트와 간단한 프로그램을 만들며 조건, 데이터 처리, API 사용과 오류를 추적하는 방법을 익혔습니다.

봇과 웹 서비스로 영역 확장

카카오톡 봇과 디스코드 봇을 만들고 직접 운영했습니다. 사용자의 예상하지 못한 입력과 서버 오류를 경험하며 배포 이후의 관리가 중요하다는 것을 배웠습니다.

풀스택과 리눅스 서버 학습

프론트엔드, 백엔드, 데이터베이스를 연결해 하나의 서비스를 완성하고 Linux, Docker, Nginx를 이용한 배포와 서버 운영까지 범위를 넓혔습니다.

외주·팀 프로젝트와 웹 보안

요구사항을 정리해 실제 결과물로 납품하는 경험을 쌓고 있습니다. 동시에 웹 해킹을 공부하며 취약점이 발생하는 구조와 이를 막는 안전한 구현 방법을 함께 익히고 있습니다.

문제를 발견하고,
작동하는 답을 만듭니다.

AegisFlow 로고

API SECURITY · PERSONAL

AegisFlow

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

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

INFRASTRUCTURE · PERSONAL

OrbitOps

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

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

DATA VALIDATION · TEAM

미세먼지 검증 시스템

공공 API의 누락되거나 잘못된 값까지 고려해 환기 장치를 안정적으로 제어하는 IoT 시스템입니다.

문제 상황과 역할
공공 데이터가 늦게 오거나 누락되면 환기 장치가 잘못 동작할 수 있었습니다. 데이터 유효성 검사와 팬 제어 로직, 데이터 우선순위 설계를 맡았습니다.
시도와 고민
정상값만 바로 사용하는 방식 대신 범위·갱신 시간·결측값을 검증했습니다. 오류 상황에서도 멈추지 않도록 최근 정상값과 로컬 센서를 대안으로 두었습니다.
해결과 결과
기준값 주변에서 팬이 반복 작동하던 문제는 시작·정지 기준을 분리하고 최소 작동 시간을 두어 안정화했습니다.
배운 점
외부 API를 쓰는 기능은 정상 응답만 구현해서는 충분하지 않았습니다. 지연, 누락, 비정상 값에도 어떤 선택을 할지 제품 동작으로 설계해야 했습니다.
PythonOpen APIValidationIoT
DevVault 로고

DEVELOPER TOOL · PERSONAL

DevVault

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

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

필요한 기술을 연결해
하나의 서비스로 완성합니다.

한 언어에 영역을 가두지 않습니다. 웹 프론트엔드와 백엔드부터 자동화, 서버 도구까지 목적에 맞는 언어를 선택해 구현합니다.

C
C++
Python
JavaScript
TypeScript
Java
Go
Rust
PHP
Kotlin
Dart
Bash

TypeScript · Node.js

REST API의 인증과 권한을 미들웨어로 분리하고, 예외 응답과 로그 형식을 통일해 운영 중 원인을 추적하기 쉽게 구성했습니다.

React · WebSocket

서버 상태와 배포 이벤트가 즉시 반영되는 대시보드를 만들고, 연결이 끊겼을 때 재연결과 누락 데이터 복구 흐름을 구현했습니다.

Redis · SQL

요청 제한과 캐시에 Redis를 사용하고, 관계형 데이터의 인덱스와 쿼리 실행 계획을 확인해 느린 조회를 개선한 경험이 있습니다.

Linux · Docker · Nginx

서비스를 컨테이너로 배포하고 리버스 프록시, HTTPS, 프로세스 로그와 롤백 과정을 직접 구성해 운영했습니다.

Python · Automation

외부 API 데이터 검증과 반복 작업 자동화 도구를 제작했으며, 실패 조건과 재시도 정책을 테스트 가능한 함수로 분리했습니다.

Web Security

Burp Suite로 요청 흐름을 분석하고 인증·권한·입력값 처리 문제를 재현한 뒤, 서버 코드와 설정에서 수정 방법을 찾습니다.

아이디어를 서비스로 만드는
저만의 작업 순서입니다.

기술부터 고르기보다 누가 어떤 상황에서 불편한지 먼저 확인합니다. 작동하는 첫 버전을 빠르게 만든 뒤 실제 사용 과정에서 발견한 문제를 기록하고 고칩니다.

01 / DEFINE

문제를 좁힙니다

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

02 / BUILD

끝까지 연결합니다

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

03 / VERIFY

실패를 먼저 확인합니다

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

04 / IMPROVE

운영하며 고칩니다

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

앞으로 더 깊게
해 보고 싶은 일

제가 되고 싶은 개발자는 새로운 기술을 많이 아는 사람에서 멈추지 않습니다. 사용자의 문제를 정확히 듣고, 필요한 범위만큼 빠르게 만들고, 문제가 생겼을 때 끝까지 원인을 찾아 고칠 수 있는 사람입니다. 빠르게 만드는 능력에 안전성과 완성도를 더해, 잠깐 보여 주는 결과물이 아니라 사람들이 꾸준히 찾는 서비스를 직접 만들고 운영하는 것이 목표입니다.

사람들의 불편을 줄이는 제품

복잡한 절차나 반복되는 일을 단순하게 만들고, 사용자가 설명서를 읽지 않아도 바로 쓸 수 있는 도구를 만들고 싶습니다. 좋은 기능보다 사용자의 다음 행동을 자연스럽게 만드는 경험을 먼저 고민하겠습니다.

보안을 기본으로 갖춘 웹 서비스

기능을 모두 만든 뒤 보안을 추가하는 방식에서 벗어나 인증, 권한, 입력값 검증과 데이터 보호를 설계 단계부터 고려하고 싶습니다. 사용자가 보안 때문에 불편을 느끼지 않으면서도, 서비스가 기본을 지키도록 만드는 것이 제 기준입니다.

실제 트래픽을 견디는 운영 경험

모니터링과 로그, 캐시, 데이터베이스 성능을 공부해 사용자가 늘어나도 안정적으로 동작하고 문제에 빠르게 대응할 수 있는 서비스를 만들고 싶습니다. 장애를 숨기기보다 빠르게 알아차리고, 원인을 공유하고, 다시 일어나지 않게 만드는 운영을 배우겠습니다.

함께 완성하는 프로젝트

해커톤과 공모전, 팀 프로젝트에서 아이디어를 빠르게 MVP로 구현하고 다른 역할의 팀원들과 피드백을 주고받으며 완성도를 높이고 싶습니다. 혼자 잘 만드는 개발자를 넘어, 팀이 더 좋은 결과를 내도록 연결하는 동료가 되는 것이 목표입니다.

아이디어를 실제로 만들
팀과 기회를 찾고 있습니다.

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

해커톤

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

MVP · Full-stack · Demo

보안 프로젝트

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

Web Hacking · Linux · Audit

서비스 개발

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

Product · API · Operations

외주·협업

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

Planning · Delivery · Support

자주 묻는 질문

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

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

2021년 엔트리로 처음 코딩을 시작했습니다. 화면 속 결과를 직접 움직일 수 있다는 점이 재미있어 Python과 JavaScript를 공부했고, 이후 자동화 도구와 실제 사용자가 있는 서비스로 범위를 넓혔습니다.

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

사람들이 일상에서 편하게 사용할 수 있고, 사용 전과 후의 차이가 분명한 프로젝트에 관심이 많습니다. 반복되는 일을 줄이는 자동화 도구, 안전하게 사용할 수 있는 웹 서비스, 운영 과정의 문제를 해결하는 개발자 도구를 좋아합니다.

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

기술이나 기능 목록보다 누가 어떤 상황에서 불편함을 느끼는지 먼저 확인합니다. 해결할 문제와 핵심 사용 흐름을 정리한 뒤, 빠르게 작동하는 첫 버전을 만들고 사용하면서 개선합니다.

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

오류 로그와 예상하지 못한 입력을 확인하고, 사용자가 실제로 막히는 지점을 찾습니다. 기능이 동작하는 것만큼 문제를 재현하고 유지보수하기 쉬운 구조로 고치는 과정을 중요하게 생각합니다.

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

웹 요청과 인증 구조를 이해하고, 입력값 처리나 권한 확인 과정에서 생길 수 있는 취약점을 공격자와 개발자 양쪽 관점에서 살펴봅니다. 발견하는 데서 끝내지 않고 왜 문제가 생겼는지 분석하고, 안전한 구현과 서버 설정으로 연결하는 연습을 하고 있습니다.

AI는 개발에 어떻게 활용하나요?

아이디어 정리, 디자인 피드백, 막힌 부분을 검토하는 보조 도구로 활용합니다. 다만 적용한 코드와 구조는 직접 이해하고 설명할 수 있어야 하며, 핵심 로직과 최종 판단은 직접 책임지는 것을 원칙으로 합니다.

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

누군가에게 “이거 편하다”, “이 덕분에 도움이 됐다”는 말을 들을 수 있는 개발자가 되고 싶습니다. 이를 위해 문제를 빠르게 해결하는 구현력과, 왜 그렇게 만들었는지 설명할 수 있는 사고력을 함께 키우고 있습니다. 사용하기 좋은 화면, 안정적인 서버, 기본을 지키는 보안을 따로 보지 않고 하나의 제품 경험으로 연결하겠습니다. 결국에는 사용자의 일상을 조금 더 가볍게 만들고, 팀에는 신뢰할 수 있는 동료로 남는 개발자가 되는 것이 목표입니다.

다음 아이디어를 함께 시작할까요?

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