이민기

안녕하세요 👋🏻 저는 완벽한 코드는 없다고 믿으며 계속 고쳐나가는 3년차 개발자 이민기입니다. 블록체인에도 관심을 가지고 꾸준히 성장하고 있습니다. 우측 하단 'Contact'를 통해 연락하실 수 있습니다.
Introduce
저는 팀과 프로젝트의 목표를 빠르게 이해하고, 변화하는 상황에서도 유연하게 최선의 방법을 찾아 실행하는 개발자입니다.
실제 회사 프로젝트를 경험하면서 확장성과 유지보수성을 고려한 구조 설계의 중요성을 깊이 체감했고, 실제 프로젝트에서는 FSD(Feature-Sliced Design), Atomic Design Pattern 등 구조적 설계 패턴을 적용하여 코드의 일관성과 재사용성을 높였습니다.
또한, 클린 아키텍처와 도메인 주도 설계(DDD)에도 관심을 갖고 지속적으로 학습하고 있습니다.
협업 과정에서는 코드의 일관성과 가독성을 높이는 데 집중하고, 효과적인 커뮤니케이션을 위해 불확실한 부분은 적극적으로 질문하며, 피드백은 명확하고 존중하는 태도로 전달하는 것을 중요하게 생각합니다.
React/Next.js 기반 프론트엔드를 중심으로,Node.js 백엔드와 Golang 기반 블록체인 네트워크 등 다양한 기술 스택을 실제로 경험하며, 이러한 폭넓은 경험을 바탕으로 지속적으로 성장하고 팀과 프로젝트에 실질적인 가치를 더하는 개발자로 발전하고자 합니다.
Work Experience
OpusM
2022.07 ~ Research EngineerSKT PASS SIGN
SKT PASS앱을 이용한 전자계약 서비스 개발2022.07 ~ 2024.07Front-End Developer
- 전자계약서 생성 시스템 및 PDF 생성 개발
- 개인 계약서 관리 대시보드 개발
- 프론트엔드 설계 및 아토믹 디자인 패턴 도입
- 서비스 전체 시나리오 및 계약 증명 모델 설계
- Storybook 및 테스트 코드 도입으로 품질 향상
- 서비스 성능 최적화
React Hook Form의 렌더링 최적화 및 커스텀 밸리데이션을 적용하여, 다양한 계약서 템플릿을 지원하는 확장성 높은 입력 시스템을 구현했습니다. React-PDF와 커스텀 훅을 활용해 입력 데이터를 기반으로 PDF 계약서를 동적으로 생성하고, 5종 이상의 계약서 양식을 체계적으로 관리했습니다.
사용자가 자신의 계약서를 효율적으로 관리할 수 있도록, 계약서 목록 조회, 상세 보기, 서명 상태 추적, 다운로드 등 계약서 라이프사이클 관리 기능을 갖춘 개인 계약서 관리 대시보드를 설계·개발했습니다.
추가 개발 과정에서 components 폴더 내부에 다양한 컴포넌트가 혼재되어 관리의 어려움을 느꼈고, 이를 개선하기 위해 아토믹 디자인 패턴을 도입하여 컴포넌트 구조를 리팩토링한 경험이 있습니다. 그 결과 코드 일관성과 신규 기능 개발 효율성을 향상시켰습니다.
서비스 기획에 참여하여 전자계약의 법적 효력과 신뢰성을 보장하기 위한 암호학 기반 계약 증명 모델을 설계했습니다. 각 사용자의 고유 식별정보(CI)와 계약서, 서명을 결합하여 해시 기반 증명 체계를 구현했습니다. 이 모델은 첫 번째 서명자의 정보와 계약서를 해싱한 후, 두 번째 서명자의 정보를 추가하여 최종 해시값을 생성함으로써 계약의 진위성과 무결성을 검증할 수 있도록 설계했습니다.
디자이너와의 협업에서 컴포넌트 UI를 명확하게 공유하고 소통하기 위해 Storybook을 도입했습니다. 이를 통해 컴포넌트를 문서화하여 디자인과 실제 구현물 간의 차이를 줄이고, 피드백 및 수정 과정을 효율적으로 관리할 수 있었습니다. 또한, Jest와 React Testing Library를 활용해 UI 테스트 및 단위테스트를 포함하여 96개의 테스트 케이스를 작성하고 95% 이상의 테스트 커버리지를 달성했습니다.
초기 개발 일정상 다양한 외부 도구 및 스타일링 방식을 사용했으나, 이후 컴포넌트 스타일링을 일원화하고 이미지 최적화, 레이지 로딩, 코드 스플릿팅 등 프론트엔드 성능 최적화 기법을 직접 적용하여 초기 로딩 시간을 약 68% 단축(4.1초 → 1.3초)하고 Lighthouse 성능 점수를 65점에서 94점으로 향상시켰습니다.
LedgerMaster 3.0 MetaVisual
블록체인 솔루션 LedgerMaster3.0 Admin 사용자를 위한 Blockchain 대시보드 개발2024.07Front-End Developer
- 블록체인 익스플로러 대시보드 개발
- 스마트 컨트랙트 컴파일 및 배포 시스템 구현
- 프론트엔드 전체 구조 설계
- Next-Auth Credential Provider 기반 인증 시스템 개발
- TurboRepo를 이용한 Monorepo 구조 구축
- Jest를 이용한 단위 테스트 작성
블록체인 데이터를 실시간으로 시각화하는 대시보드를 개발했습니다. 서버 API를 통해 블록 정보, 트랜잭션 내역, 계정 정보 등을 테이블 형태로 구성하여, 사용자가 주요 블록체인 데이터를 한눈에 확인할 수 있는 인터페이스를 구현했습니다.
스마트 컨트랙트의 컴파일부터 배포까지의 전체 프로세스를 관리할 수 있는 사용자 인터페이스를 개발했습니다. 스마트 컨트랙트 파일 업로드, 컴파일 결과 확인, 배포 파라미터 설정 등의 기능을 통해 개발자가 효율적으로 스마트 컨트랙트를 관리할 수 있도록 구현했습니다.
애플리케이션의 확장성과 유지보수성을 고려하여 Feature-Slice Design Pattern(FSD)을 도입했습니다. 비즈니스 로직, 엔티티, 위젯 등을 기능별로 분리해 관리함으로써 코드 구조를 체계화하고, 각 도메인의 독립적인 개발과 테스트가 가능해졌습니다. 또한, package/ui에서는 순수 UI 컴포넌트를 별도로 관리하며, Atomic Design Pattern을 적용하여 컴포넌트의 재사용성과 확장성을 높였습니다. 이를 통해 UI 일관성을 확보하고, 신규 기능 추가 및 유지보수 효율성을 크게 향상시켰습니다.
서비스 요구에 맞춰 Next-Auth Credential Provider로 인증 시스템을 직접 구현했습니다.
가입 승인, 조건 검증, 에러 처리 등 필요한 인증 로직을 자유롭게 커스터마이징하여 적용했고, 인증 시스템의 구조가 단순해져 장애 대응과 기능 추가가 훨씬 쉬워졌습니다.
프로젝트의 패키지 관리 효율성을 높이고 솔루션 문서 애플리케이션과 어드민 프론트엔드 간 디자인 일관성을 유지하기 위해 TurboRepo를 활용하여 Monorepo 구조를 도입했습니다. 이를 통해 공통 컴포넌트와 설정 파일의 중앙화가 가능해졌습니다. 특히 디자인 시스템을 독립적인 패키지로 분리하여 예정된 문서 애플리케이션과의 UI 일관성을 확보하고, 패키지 간 의존성 관리를 단순화했습니다.
코드의 안정성을 위해 Jest와 Testing Library를 활용하여 주요 컴포넌트와 비즈니스 로직에 대한 단위 테스트를 작성했습니다. 이를 통해 코드 커버리지가 80% 이상 확보되었습니다.
LedgerMaster 3.0
블록체인 솔루션 LedgerMaster3.0 Admin Server 개발2023.06 ~Back-end Developer
- RESTful API 서버 및 엔드포인트 설계·구현
- 도메인 주도 설계(DDD) 기반 서비스 구조 설계
- 클린 아키텍처 기반 외부 시스템 추상화
- MongoDB를 활용한 분산 이벤트 데이터 아키텍처 설계
- Smart Contract 컴파일, 배포 및 실행 기능 구현
- Jest 기반 도메인 단위 테스트 및 외부 의존성 격리
- Npm, Nexus private repository 연동
Express와 TypeScript 기반으로 인증, 사용자, 스마트 컨트랙트, 트랜잭션 등 다양한 비즈니스 로직을 지원하는 RESTful API 엔드포인트를 설계·구현했습니다. Joi를 활용한 입력 데이터 검증, JWT 기반 인증/인가, 일관된 에러 핸들링 및 응답 포맷 적용 등 API의 신뢰성과 보안성을 높였습니다.
복잡한 비즈니스 로직을 도메인 중심으로 모델링하고, 도메인별 책임과 역할을 체계적으로 분리했습니다. 이를 통해 서비스의 확장성과 도메인 로직의 명확성을 높였으며, 신규 기능 추가 및 요구사항 변경 시에도 코드 영향 범위를 최소화할 수 있었습니다.
데이터베이스, 메시징, 블록체인 등 외부 시스템과의 결합도를 낮추기 위해 의존성 주입 및 인터페이스 추상화를 적용했습니다. 그 결과, 테스트 환경에서도 Mock 객체를 활용해 비즈니스 로직을 독립적으로 검증할 수 있었고, 인프라 변경이나 외부 시스템 교체 시에도 도메인 로직의 수정 없이 유연하게 대응할 수 있었습니다.
MSA 환경에서 NATS를 통해 수신되는 스마트 컨트랙트 및 트랜잭션 이벤트를 효율적으로 저장·분석할 수 있도록 MongoDB 구조를 설계하고 구현했습니다. 데이터 저장의 일관성과 도메인 로직의 명확성을 위해 DB Entity와 Domain Entity를 분리하여 설계함으로써, 도메인 데이터의 확장성과 안정성을 높였습니다.
어드민에서 스마트 컨트랙트 개발과 배포를 쉽게 할 수 있도록 ERC20, ERC721 등 주요 SmartContract 템플릿을 제공하고 OpenZeppelin과 solc 라이브러리를 활용해 컨트랙트의 컴파일 및 배포 기능을 구현했습니다.
Jest 프레임워크를 활용하여 사용자 등록, 인증 등 주요 도메인 로직에 대한 단위 테스트를 체계적으로 구현했습니다. Mock 객체와 인터페이스 추상화를 통해 데이터베이스, 외부 시스템 등 인프라 환경에 영향을 받지 않고, 다양한 성공 및 예외 케이스를 독립적으로 검증함으로써 서비스의 신뢰성과 유지보수성을 높였습니다.
공통 패키지의 효율적 관리와 버전 일관성 확보를 위해 Npm과 Nexus private repository를 연동한 라이브러리 관리 시스템을 구축했습니다. 다양한 Node.js 서비스에서 패키지 활용이 체계화되어, 개발 환경의 일관성과 효율성이 향상되었습니다.
LedgerMasterJS SDK
블록체인 솔루션 LedgerMaster3.0 사용을 위한 SDK 개발2024.04 ~ 2024.06- 비밀번호 기반 지갑 관리 SDK 개발
- 오프라인 트랜잭션 서명 기능 구현
블록체인 솔루션의 사용자 편의성 향상을 위해 ethereumjs-wallet 라이브러리를 활용한 암호화폐 지갑 관리 SDK를 개발했습니다. 사용자가 비밀번호만으로 지갑 생성 및 접근이 가능하도록 하여 개인키 관리의 부담을 줄이고, 비밀번호를 이용한 로그인을 통해 편의성을 강화했습니다.
Web3.js와 ethereumjs-tx 라이브러리를 활용하여 스마트 컨트랙트 메서드 호출을 위한 트랜잭션 생성 및 서명 모듈을 구현했습니다. 사용자가 개인 키를 직접 노출하지 않고 암호화된 지갑과 비밀번호만으로 안전하게 트랜잭션을 서명할 수 있는 인터페이스를 제공했습니다.
Opus Wallet
DID(Decentralized Identity)를 위한 BlockChain Wallet 개발 팀으로 DID 연구 및 개발에 참여2023.01 ~ 2023.05Researcher
- DID 프로세스 시나리오 연구 및 설계
- Hyperledger 기반 DID 인프라 연구 및 프로토타입 개발
사내 블록체인 기술 기반의 DID Wallet 개발을 위해 출퇴근 인증 시스템 프로세스를 설계했습니다. 회사가 이슈어(Issuer)로서 QR 코드를 통해 직원(홀더, Holder)에게 VC(Verifiable Credentials)를 발급하고, 직원은 회사 출퇴근 시스템(검증자, Verifier)에 VP(Verifiable Presentation)를 제출하여 출퇴근을 증명하는 시나리오를 제안했습니다. 이 설계를 통해 기존의 카드 태깅 방식보다 보안성이 강화된 신원 인증 시스템의 가능성을 연구했습니다.
설계한 DID 출퇴근 인증 시스템의 실현 가능성을 검증하기 위해 Hyperledger VON, Aries Cloud Agent, Indy Tails Server를 활용한 테스트 환경 구성에 참여했습니다. 분산원장 기술을 활용하여 중앙 서버 없이도 신원 정보를 안전하게 관리할 수 있는 가능성을 탐구하고, VC 발급 및 VP 검증 프로세스의 개념 증명(PoC) 검증에 기여했습니다. 이 과정에서 개인정보 보호와 데이터 주권을 모두 충족하면서도 신뢰할 수 있는 출퇴근 인증 시스템의 기술적 타당성을 확인했습니다.
Opstra
Cosmos SDK 기반 커스텀 체인 개발 및 CometBFT 합의 알고리즘을 활용한 분산 네트워크 구축2025.04 ~- Cosmos SDK 기반 커스텀 블록체인 네트워크 구축
- 노드 구성 셋업
- 자체 테스트 네트워크 실시간 모니터링 시스템 구축
자체 블록체인 네트워크 개발을 위해 Cosmos SDK의 체인 설정과 모듈 구성을 커스터마이징했습니다. 네트워크 식별자, 토큰 단위(denom), 주소 체계(bech32 prefix)를 설계하고, 거버넌스 매개변수를 설정하여 독립적인 블록체인 네트워크의 기초를 구축했습니다.
테스트 네트워크 구축을 위해서 회사 사내 PC들을 이용하여 벨리데이터 노드 4대와 RPC 노드 2대를 구성하여 P2P 연결을 통해 네트워크를 구성했습니다.
PingPub 대시보드를 포크한 프로젝트에 연결하여 구축한 테스트 네트워크 노드들에 대한 실시간 모니터링 시스템을 구축했습니다.
Other Experience
Contributions
2023.07.23 Hyperledger Indy Tails File을 수신, 저장 및 제공하는 오픈 소스 프로젝트에서 Docker indy_vdr의 버전을 명시적으로 지정하지 않아 발생하는 오류를 수정했습니다.
Docker
2023.08.24 Cosmos 풀 노드에서 LCD/RPC 엔드포인트를 통해 데이터를 독점적으로 가져와 체인 데이터를 실시간으로 탐색할 수 있는 오픈 소스 Explorer 프로젝트의 문서 개선에 기여하였습니다.
2024.08.31 Cosmos 공식문서를 읽는 스터디를 진행하던 중 ABCI 관련 개발자 문서의 품질 향상에 기여하였습니다.
Projects
Open Source Template를 커스텀하여 개인 블로그를 운영하고 있습니다.
Next.Js
TypeScript
Vercel
MDX
PostCSS
TailwindCSS
Prettier
Cosmos SDK 및 ABCI의 동작 원리를 공식문서를 기반으로 스터디를 진행하였으며, IBC Transaction과 Vote Extension을 트래킹하기 위한 모니터링 시스템을 개발을 진행하고 있습니다.
Go
TypeScript
React
Next.Js
TailwindCSS
Github
TurboRepo
Education
2025.03 ~ 2025.06실무 중심 과제와 멘토링 기반의 프론트엔드 집중 부트캠프
React
TypeScript
JavaScript
Vite
Vitest
TestingLibrary
TDD
AWS
- Virtual DOM 및 diff 알고리즘 구현 과제 수행
- 컴포넌트 최적화 및 상태 관리 패턴 실습
- 테스트 코드 작성 및 TDD 학습
- 소통상 수상
React의 렌더링 원리와 내부 동작을 깊이 이해하기 위해 Virtual DOM과 diff 알고리즘을 직접 구현했습니다. 이를 통해 메모리 상에서 Virtual DOM이 생성·업데이트되는 과정과 diff 알고리즘의 동작 원리를 이해했습니다.
다양한 과제를 통해 컴포넌트 구조화, 렌더링 최적화, 상태 관리 패턴 등 프론트엔드의 핵심 원리를 직접 적용하며, 복잡한 UI 상태 변화나 성능 저하 문제를 스스로 진단하고 해결하는 경험을 쌓았습니다.
Vitest와 Testing Library를 활용해 단위 테스트, 통합 테스트 등 다양한 테스트 코드를 작성하며, TDD 방식을 경험했습니다. 이를 통해 코드의 신뢰성과 품질을 높였고, 리팩터링이나 기능 추가 시에도 안정적으로 개발하고 유지보수할 수 있는 기반을 마련했습니다.
팀 과제는 개별로 수행했지만, 팀 내에서 적극적으로 정보를 공유하고, 동료들을 격려하며 긍정적인 분위기를 조성하여 팀원들의 성장에 기여한 점을 인정받아 소통상을 수상했습니다.