미리보기
기본 정보
안녕하세요, 42seoul 출신 개발자 이은지입니다. 저는 42seoul이라는 SW개발자 양성 교육 과정에서 2년 동안 C, C++, Linux, 운영체제, 네트워크, 웹 등 프로그래밍 기반 지식을 전공 과정 못지 않게 깊이 있게 학습해왔습니다. 대표적인 프로젝트로는 C기반 Linux Bash Shell 구현, C++ 기반 Nginx HTTP 웹서버 구현, Spring Boot 기반 SNS 장소 공유 서비스 프로젝트, nestJS 기반 온라인 게임 및 채팅 서비스 프로젝트가 있습니다. 또한 정보처리기사, SQLD 등 여러 자격증도 취득해 왔습니다. 대표 기술 스택은 Java, Spring Boot입니다. WEB/WAS와 같은 서버 기술에도 관심을 갖고 학습해 왔으며, Docker, AWS 등 배포 관련 기술도 경험한 바 있습니다.
교육
광운대학교
대학교(학사) | 한일통상학과
2017.03. ~ 2019.02. | 졸업
남서울대학교
대학교(학사) | 전자공학과
2015.03. ~ 2017.02. | 졸업
보정고등학교
고등학교
2012.03. ~ 2015.02. | 졸업
경력
케미스타(주)
사원 | 해외영업
2020.06. ~ 2021.08. (1년 3개월)
1년 2개월 동안 무역 수출에 필수적인 서류 작성 및 검수 업무를 담당했습니다. 이와 더불어 필요한 자료 준비 및 수출 상품의 일정을 관리하며, 이에 따른 배차 주문 업무도 수행하는 등 해외영업을 보조하는 전반적인 업무를 맡았습니다.
기술 스택
Java, JavaScript, C, C++, Python, Spring Boot, NestJS, Linux, Docker, docker-compose, AWS, cmake, MySQL, PostgreSQL, Git
자격증
SQL개발자
등급없음 | 한국데이터산업진흥원
2023.07.
정보처리기사
등급없음 | 한국산업인력공단
2023.09.
프로젝트
PinTogether: 장소 공유 SNS 웹서비스 구현
기타
2024.01. ~ 2024.04.
수행 기간: 약 3개월
규모: 4인 팀 프로젝트
목표: 규모 있는 웹개발 프로젝트를 경험해보기 위함
기술: 스택 Java, Spring Boot, Spring Data JPA, MariaDB, React, Docker, AWS
배포: Site https://www.pintogether.co.kr
GitHub: https://github.com/PinTogether
담당 업무: DB 스키마 및 엔티티 설계, 주요 API 구현, 알림 구현, AWS + Docker 배포
세부 내용:
•DB 스키마 설계 및 데이터 모델링, 엔티티 설계, API 설계
•member, collection, following, pin 등 주요 백엔드 API 구현
•WebSocket기반 알림 구현
•장소 검색 API 구현
•AWS + Docker 배포
Webserv: HTTP Nginx Web Server 구현
42seoul
수행 기간 약 3개월
규모 3인 팀 프로젝트
목표: HTTP procotol에 대한 이해 및 Web Server의 동작 원리를 파악하기 위함
기술 스택: C++, Socket Programming
GitHub: https://github.com/spew11/webserv
담당 업무: Http Protocol 구현, I/O 멀티플렉싱 구현
세부 내용:
•IO멀티플렉싱 기반의 서버 구축
•HTTP/1.1 메서드 5가지 지원
•CGI구현을 통한 동적페이지 처리
•Nginx를 차용한 서버 Configuration 구현
•다양한 서버 configuration directives 구현
•HTTP/1.1 구현 (Request/ Response 구현 및 파싱)
transendance: 실시간 게임 / 채팅 웹사이트 구현
42seoul
2023.09. ~ 2023.12.
수행 기간: 약 3개월
규모: 5인 팀 프로젝트
목표: 규모 있는 웹개발 프로젝트를 경험해보기 위함
기술: 스택 TypeScript, Nest.JS, Socket.IO, Docker, AWS
GitHub: https://github.com/spew11/game-chat-back
담당 업무: DB스키마 및 엔티티 설계, 주요 API 구현, 로그인 및 인증 구현
세부 내용:
•DB 스키마 설계 및 데이터 모델링, API 설계
•user, user-relation 등 주요 백엔드 API 구현
•socket.IO를 통한 DM(Direct Message) 구현
•Session, OAuth, TOTP 기반 로그인 및 인증 구현
minishell
42seoul
2022.11. ~ 2022.12.
수행 기간:약 2개월
규모: 2인 팀 프로젝트
목표: multi-process, IPC 등 OS의 이론 지식을 활용해 실제 Bash Shell과 동일하게
동작하는 프로그램을 구현해보고자 함
기술 스택: C, System Programming
담당 업무: multi-process, IPC, signal 등을 사용해 전반적인 Shell 동작 구현
GitHub: https://github.com/spew11/minishell
세부 내용:
•다중 파이프 구현
•환경변수 관리 구현
•리다이렉션, 파이프를 통한 IPC 구현
•ctrl-C, ctrl-D, and ctrl-\ 시그널 구현
•내장 함수 echo, cd, pwd, export, unset, env, exit 구현
포트폴리오
대외활동
메트라이프 HACK4JOB IT 해커톤 대상
메트라이프 생명보험
주제: Azure OpenAI를 접목한 보험 서비스 개발
목표: RAG기반 AI챗봇서비스 개발
담당 업무: 팀장
- 팀내 커뮤니케이션 조율
- AI모델과 백엔드 API 연결
- RAG 임베딩 인덱스 구축
- PPT 작성 및 발표 구현
결과: 10팀 중 1등으로 대상 수상
자기소개
[42seoul]
직무 전환을 결심한 뒤로 42seoul이라는 SW 교육과정을 2년 가까운 기간 동안 참여해왔습니다. 42seoul은 여타 부트캠프와는 달리 커리큘럼이 당장의 취업에 도움 되는 실무 기술을 배우는 것에 집중하기보다는 Computer Science의 기본기를 깊이 있게 다지는 것을 목표로 하는데, 이러한 점이 저의 학습 성향과 부합한다는 생각이 들어 선택했습니다. 또, 강의 / 서적 등을 바탕으로 일방적인 주입식 교육을 받는 것이 아닌, 본인 스스로 프로젝트 중심의 자기 주도 학습을 할 수 있다는 점이 끌렸습니다.
이렇게 선택한 42seoul은 저에게 정말 많은 것을 가져다주었습니다. 제가 좋아하는 개발에 집중할 수 있는 환경과 여건을 마련해 주었고, 무엇보다 함께 공부할 수 있는 소중한 인연들을 만날 수 있게 해주었습니다. Linux 환경, C/C++, 운영체제, 네트워크, 웹 등 다양한 프로그래밍 기술 및 Computer Science에 대해 깊이 있게 학습했고, 이 과정에서 자기주도적으로 학습하고 스스로 어려움을 헤쳐나갈 수 있는 역량을 기를 수 있었습니다.
2024년 1월에 42seoul의 정규 과정(이너 서클 커리큘럼)을 모두 이수해 최종 수료하였고, 이후에도 아우터 서클 커리큘럼에 참여하고 있습니다.
[성장 과정과 직무 전환]
저의 유년기는 다소 평범했습니다. 반면 성인이 되고 난 뒤에는 변화와 도전의 연속이었습니다. 제 인생의 여러 변곡점 중에서도 가장 중요한 한 시기를 뽑으라면 IT 개발자로의 직무 전환을 결심했을 때입니다. 저는 개발과는 전혀 관련 없는 무역학과를 졸업해 무역회사에 재직 중이었습니다. 회사에서 담당하던 무역 사무 업무는 한 번 업무를 습득하고 나면 더이상 새로 배울 것이 없는 업무가 대부분이었습니다. 저는 배움과 성장에 대한 갈증이 항상 있어왔기 때문에 직무 선택에 아쉬움이 있었습니다. 또한 단순한 수동 반복 업무에 많은 시간을 들이는 것이 비효율적이라고 판단해, 이를 개선하고자 엑셀을 공부해 대부분의 반복 업무를 자동화했습니다. 이 과정에서 큰 즐거움과 성취감을 느꼈고, 프로그래밍이 저의 적성이라는 확신이 들었습니다. 무엇보다 프로그래밍이라는 분야는 매일 새로운 기술이 나타나 끊임없는 학습이 요구되는데, 항상 배움에 목말라있던 저에게는 매우 적합한 분야라는 생각이 들었습니다. 제가 좋아하면서도 적성에 맞는 일을 찾았다는 생각에 직무를 전환하는 것을 고민하게 되었습니다. 바로 실천에 옮기기 보다는 직무 전환 과정에 대해서 구체적인 계획을 세워보고자 여러 SW 부트캠프를 탐색했습니다. 그 중 42seoul이 2년이라는 충분한 기간동안 학습할 수 있고, 또 학습 과정에 온전히 집중할 수 있도록 경제적인 지원도 있다는 점, 무엇보다 커리큘럼이 제가 지향하는 학습관과 일치한다는 점에서 저에게 가장 적합하다고 판단했습니다.
그 뒤, 망설이지 않고 현 직장을 그만두며 42seoul과 함께 SW개발 학습을 시작했습니다. 이렇게 선택한 42seoul은 저에게 정말 많은 것을 가져다주었습니다. 제가 좋아하는 개발에 집중할 수 있는 환경과 여건을 마련해 주었고, 무엇보다 함께 공부할 수 있는 소중한 인연들을 만날 수 있게 해주었습니다. Linux 환경, C/C++, 운영체제, 네트워크, 웹 등 다양한 프로그래밍 기술 및 Computer Science에 대해 깊이 있게 학습했고, 이 과정에서 자기주도적으로 학습하고 스스로 어려움을 헤쳐나갈 수 있는 역량을 기를 수 있었습니다.
2024년 1월에 42seoul의 정규 과정(이너 서클 커리큘럼)을 모두 이수해 최종 수료하였고, 이후에도 아우터 서클 커리큘럼에 참여하고 있습니다. 위와 같은 과정을 거쳐 현재까지 Server/Backend 개발자를 목표로 꾸준히 학습을 해오고 있습니다.
[SW개발 학습/경험]
제가 프로그래밍 학습을 해오면서 꼭 지키고자 했던 원칙은 넓고 얕게 아는 것보다 깊이 있게 학습하자는 것이었습니다. 실무에서 사용하는 기술의 사용법을 익히는 것은 당장의 취업에는 도움이 될 수 있겠지만, 기반 지식은 기술의 원리와 본질을 이해하는 데 큰 도움이 된다고 생각했습니다. 따라서 개발자로 장기적인 성장을 위해서는 처음부터 프로그래밍 기본기를 다져놓는 것이 중요하다고 판단했고, 이를 위해 2년이라는 충분한 시간 동안 SW 기본기에 집중하는 42seoul 교육과정을 선택해 참여 후 최종 수료했습니다. 또한 깊이 있는 Computer Science 지식과 개발 역량을 기르고자 아래와 같은 프로젝트들을 진행해 왔습니다.
첫 번째로 웹서버의 동작 원리를 이해하고자 C++ 기반 Nginx HTTP 웹서버 구현 프로젝트(github.com/spew11/webserv)를 진행했습니다. 웹서버의 동작 원리가 궁금했고, HTTP 프로토콜을 직접 구현하고 이해해 보고자 하는 욕심이 있어 진행했습니다. 3인 팀프로젝트로 진행했는데, 저는 HTTP 프로토콜과 관련된 모든 구현을 담당했습니다. 처음으로 진행한 규모 있는 팀 프로젝트였다는 점과, 웹백엔드에서 널리 사용되는 HTTP와 웹서버라는 기술의 동작 원리에 대해 이해하게 되었고, 또한 그동안 웹 개발을 하면서 추상적으로만 느껴졌던 servlet, WAS, CGI 등을 구체적으로 이해하는 계기가 되었다는 점에서 뜻깊은 프로젝트였습니다.
두 번째로 웹 백엔드 기술을 익히고자 JAVA 및 Spring boot를 학습했습니다. 서적을 바탕으로 JAVA를 독학하던 중 부족함을 느껴 주변 대학교에 청강 신청을 해 JAVA 및 객체지향 프로그래밍 강의를 수강했습니다. 이를 통해 JVM의 역할과 기능, OOP의 철학, Collections의 다양한 자료구조 등에 대해 이해할 수 있게 되었습니다. 이후 Spring Boot 및 JPA를 사용해 간단한 커뮤니티 게시판을 구현하는 소규모 프로젝트(github.com/spew11/Board)도 진행했습니다. 프로젝트 설계 과정에서 DB 스키마 설계 도중 이론 지식에 대한 부족함을 느껴 데이터베이스 이론 강의를 수강한 뒤 개념을 적용했으며, JPA를 이해하기 위해 과거에 사용되었던 JDBC, JDBC Template 등 관련 기술의 역사를 서적을 바탕으로 학습하기도 했습니다.
[웹백엔드 프로젝트 경험]
[장소공유 SNS 서비스: 핀투게더]
GitHub: https://github.com/spew11/PinTogether-backend
배포 사이트: https://www.pintogether.co.kr/
4인 팀프로젝트로, 프론트엔드 2인, 백엔드 및 배포 2인으로 구성되었습니다. 저는 백엔드 개발 및 배포를 담당했습니다. Java Spring Boot + JPA 프레임워크를 사용했고, 데이터베이스는 MariaDB, 배포는 AWS ElasticBeanstalk로 진행했습니다. 저는 DB 스키마 및 엔티티 설계, API 설계 및 주요 API 구현, 웹소켓 기반 알림 구현을 담당했습니다. AWS 기반 배포 및 CI/CD 파이프라인 구축도 수행했습니다. 이를 통해 EC2, RDS, S3 등의 컴포넌트를 사용하며 AWS의 다양한 서비스를 사용해 볼 수 있었습니다. 또한 개인적으로 AWS+docker를 이용한 배포 경험을 통해 클라우드 기술과 컨테이너 기술을 융합해 적용하는 경험을 할 수 있었습니다.
[온라인 게임 및 채팅 서비스 프로젝트]
GitHub: https://github.com/spew11/game-chat-back
Java Spring Boot와 유사한 Nest.JS 프레임워크를 사용했습니다. 5인 프로젝트로 진행했으며, 저는 DB 스키마 및 엔티티 설계, 전반적인 API 설계를 주도하는 역할을 맡았습니다. 구체적인 구현 범위는 user와 user-relation 모듈에 대한 백엔드 API와 OAuth2.0, session 기반의 로그인 및 TOTP 기반 2차 인증 구현, Socket.IO을 이용한 DM 구현이었습니다. 로그인을 구현하면서 OAuth2.0의 전반적인 프로세스를 이해하게 되었으며, JWT토큰과 세션 방식의 차이와 장단점을 비교하기도 했습니다. 최종적으로 중복 로그인 방지와 및 사용자 활성 상태 추적을 위해 세션을 선택했습니다. 이 과정에서 쿠키와 세션의 차이, 브라우저의 저장소(local storage, session storage, cookie)의 역할과 장단점을 이해할 수 있었습니다. 또한 프로젝트를 진행하면서 다양한 보안 문제들과 직면하게 되었는데, 특히 CORS 정책, httpOnly, sameSite, secure와 같은 쿠키 속성을 사용하면서 보다 효과적인 보안 대책을 고민해 볼 수 있었습니다.
[장단점]
저의 단점은 기억력이 그다지 좋지 않다는 점입니다. 프로그래밍을 학습하면서 공부한 내용들이 정말 많았는데, 금방 잊어버리고 동일한 내용을 다시 공부하게 되는 경우가 빈번했습니다. 이러한 방식은 많이 비효율적이라는 생각이 들었고, 이를 해결하기 위해 Notion과 같은 툴을 사용해 공부한 내용들에 대해 매번 문서화를 진행했습니다. 이렇게 작성한 내용들은 제가 잊어버리더라도 검색을 통해 해당 내용을 찾아 읽게 되면 금방 리마인드가 되었고, 저만의 자체적인 지식 DB의 역할을 하게 되었습니다. 덕분에 그동안 학습했던 방대한 내용들에 대해 당장은 잊어버렸더라도, 언제든 다시 기억을 되살릴 수 있었기에 더 효율적으로 학습을 할 수 있었습니다.
한편, 제 성격의 장점은 도전을 두려워하지 않는다는 점입니다. 편입을 결심했을 때, 무역이라는 개발과 전혀 관련 없는 직군에서 개발자로 직무 전환을 결심했을 때 등 여러 변화의 상황에서 주어진 선택지들을 충분히 고민한 뒤 결심하면 망설이지 않고 바로 실행에 옮겼습니다. 이러한 성격은 개발 직무 학습 중에도 큰 도움이 되었는데, 프로젝트 일정 산출에 있어서도 도전적인 목표를 설정하고 달성해 내었습니다. 또한 여러 언어와 새로운 기술을 접하고 배울 때에도 망설이기보다는 자신감을 갖고 일단 부딪혀보며 적응해나가는 방식으로 학습해왔습니다.
[차별점]
저만의 차별화된 강점은 공동체 내에서 윤활유 역할을 하는 사람이라는 점입니다. 저는 SW개발로 직무 전환을 하기 이전에 전자공학, 무역 등 여러 분야를 경험하며 다양한 사람들을 만나왔습니다. 이 과정에서 일관되게 느꼈던 점은 조직 내에 아무리 뛰어난 역량을 가진 개개인들이 있다고 하더라도, 하나의 팀으로써 시너지가 나지 않는다면 좋은 성과를 내기 어렵다는 것이었습니다. SW개발 프로젝트에서도 역시 가장 중요한 것은 SW개발 역량이 아닌 구성원 간 소통 능력, 협업 역량이라고 생각했고, 이를 실천하고자 여러 프로젝트에서 항상 팀의 윤활유 역할을 해왔습니다. 구체적으로 구성원들의 어려움을 먼저 살피며 해결하고, 하나의 팀으로 시너지를 낼 수 있도록 도왔습니다.
대표적인 사례로, 제가 참여했던 온라인 채팅 및 게임 웹서비스 프로젝트에서는 새로 팀에 참여한 구성원이 낯가림이 심해 기존의 팀 사이에서 적응을 어려워한 경우가 있었습니다. 저는 우선 신규 팀원의 고충을 들어보고자 개인적으로 식사 약속을 잡으며 이야기를 나눠봤습니다. 알고 보니 본인이 참여하기 이전에 이미 개발된 내용이 방대했기에 이를 파악하는 데 시간이 필요하셨고, 낯가림이 심해 먼저 도움을 요청하기 어려워하던 중이셨습니다. 저는 기존 구성원들이 이전에 개발했던 내용을 직접 공유하는 자리를 만들었고, 서로 자유롭게 질문하고 소통할 수 있는 슬랙 채널을 구축했습니다. 또한 보드게임 등 팀 전체가 함께 할 수 있는 놀이를 제안하며 팀원들 사이 거리감을 좁히고자 노력했습니다. 이후 신규 팀원분이 원활히 적응하신 뒤, 본인의 역량을 여과 없이 발휘하시며 프로젝트 진행에 크게 기여해주셨습니다.
한편, 3월에 참여한 Azure OpenAI를 접목한 보험 서비스 개발 해커톤에서도 팀장 역할을 맡아 의견 차이를 중재한 적이 있습니다. 웹백엔드 개발 담당 팀원이 본인의 담당 구현량을 늘리고자 여러 부가 기능을 추가하려 하는 상황이었습니다. 반면 AI 담당 팀원분들께서는 모델 API화, RAG 구축 등의 작업을 백엔드에서 지원해 주시길 원하셨습니다. 팀원들과 논의 끝에 현실적으로 시간이 촉박하기에 우선 핵심 기능인 AI를 서포트하는 쪽으로 의견을 조율했고, 프로젝트에 불필요한 기능은 제외하되, 로그인 및 인증 기능에 한해서는 시간이 되는 한에서 구현하는 것으로 결정했습니다.
이후 프로젝트는 원활히 진행되어 RAG 기반 보험 챗봇 서비스가 완성되었으며, 로그인 및 인증 기능도 포함되었습니다. 결과적으로 촉박한 시간 내에서 완성도 있는 결과물을 만들어내 대상(1위)을 수상했습니다.
[수상 경험: 메트라이프생명보험 Azure OpenAI 해커톤 (Hack4Job) 대상(1위)]
최근 Azure OpenAI를 접목한 보험 서비스 개발 해커톤에 참여한 경험이 있습니다. 14시간이라는 짧은 시간에 전체 프로젝트를 완성해야 한다는 점에서 단순한 완성만으로도 촉박했지만, 실제로 서비스에 탑재될 수 있는 퀄리티를 확보하기 위해 RAG라는 기술을 탑재하자는 도전적인 목표를 세웠습니다.
총 9명이라는 많은 인원이 모여 단기간에 서비스를 완성하기 위해서는 한 명이 리더십을 갖고 주도할 필요가 있다고 판단해 제가 팀장을 맡았습니다.
저는 사전에 AI모델의 종류 및 특징을 조사 후 공유해 팀의 AI 이해도를 높였고, AI개발자와 다른 팀원들의 소통을 중개했습니다. 또한 한정된 시간 내에서 완성할 수 있도록 이견을 조율해 현실적인 구현 범위를 설정했습니다. 구현에 있어서는 AI 모델 서버를 벡엔드에서 호출할 수 있도록 API화했고, RAG에서 사용할 문서 임베딩 인덱스를 구축했습니다. 결과적으로 촉박한 시간 내에서 완성도 있는 결과물을 만들어내 대상(1위)을 수상했습니다.
외국어
영어
일상 회화 가능