성장과정
기술 스택 / Tech Stack
- Language
- C, C++, C#, Java, Javascript, HTML+CSS
- Server
- Node.js - Express Framework
- ASP .Net Core(C#) - MVC Framework
- Java Socket
- Database
- MySQL, MariaDB, MongoDB
- OS
- Windowx, Ubuntu, macOS
- Etc
- Arduino, Raspberry Pi, ARM Cortex M3
경력
-
(주)노바테크 / Solution팀 사원
-
회사홈페이지관리 ( PHP, MySQL )
2019년 4월 ~ 진행중
회사에서 호스팅 및 웹 제작을 맡긴 업체로 부터 서버이전을 진행하였고, 회사내의 서버로 홈페이지를 관리하고있습니다. 서버이전을 통해 웹서버와 웹 어플리케이션에대한 지식을 습득하였습니다. 이후 문의사항과 같은 필요한 기능을 추가하였습니다. GNU Board5 기반으로 제작된 웹사이트는 보안이슈가 많이 발생하기때문에, 매일 보안이슈를 확인하고 코드를 수정하고 있습니다. -
스마트공장 구축지원 사업 / 육가공 MES 시스템 ( C#, ASP .NET Core, Node.js, Socket.IO, MariaDB )
2019년 4월 ~ 진행중
한 육가공업체의 MES 시스템을 개발중입니다. 이력관리가 매우 중요한 점을 염두하고 개발에 임하고 있습니다. 전 이 프로젝트에 참여하여 생산관리 부분을 개발하며 sql문을 이용해 재고관리, 재고 묶음 처리등의 기능을 구현했습니다, 또한, 터치스크린과 장비, 메인서버 사이의 통신을 Node.js와 Socket.IO를 이용하여 구현했습니다. -
지역주력산업육성 R&D / 비즈니스 사이트 ( Node.js, MongoDB )
2019년 11월 ~ 2019년 12월
천장크레인 유지보수와 관련하여 비즈니스 사이트를 개발중입니다. 프로젝트 소개 및 도입효과 산정, 체험서비스를 기획하였습니다. Express Framework를 사용하여 서버사이드를 구현하고, MongoDB를 데이터베이스로 선정하여 개발중에 있습니다.
-
학력
- 전북대학교 / 3학년
- 2016년 3월 - 2018년 12월, 전라북도 전주시
- 3학년 1학기 이후 휴학중
자기소개
1. 효율을 중시하는 백엔드 엔지니어
제 목표는 효율을 중시하는 백엔드 엔지니어입니다. 효율적인 시스템을 개발하기 위해서는 설계가 매우 중요하다고 생각합니다.
육가공 업체의 MES 프로젝트를 진행하며 재고와 이력관리를 위한 DB 설계와 생산관리 개발에 참여한 경험이 있습니다.
시스템에는 하루에 10000건 이상의 데이터가 입력되고 관리되기 때문에 최적의 효율로 돌아가는 쿼리문과, 상황에 맞는 메소드를 효율적으로 만들어야 했습니다. 그중에서 가장 기억에 남는 부분은 “동일상품 묶음처리” 기능입니다. 이력 번호는 다르지만 상세분류가 같은 상품들을 하나로 합치고 새로운 이력번호를 부여하는 기능입니다. 이 기능 구현 시 고려할 것은 이력번호가 뒤엉키지 않도록 하고 합치기 전의 재고는 조회나 이용을 할 수 없도록 하며, 합쳐진 것만 조회되고 이용할 수 있도록 하는 것이었습니다.
당시 DB는 상품이 아닌 창고를 기준으로 설계되어 있었고, 이러한 설계는 재고조회에는 용이하였으나 이력을 관리하는 데에는 적합하지 않았습니다. 이력관리가 매우 중요한 육가공 업체의 특성을 고려하여, 상품 기준으로 다시 설계하였습니다. 그리고 묶음생산용 플래그를 생성하고, 기존 상품의 id 값 칼럼 다음에 묶음 처리된 상품의 id를 저장하여 재고조회 측면의 한계점도 해결하였습니다. 이러한 문제점을 개선하여 3일간의 테스트를 진행했습니다. 그 결과 고객으로부터 “이전 시스템보다 이력번호가 틀어질 일이 없고, 매칭이 빨라졌다.” 라는 긍정적인 피드백을 받을 수 있었습니다.
위와 같은 경험을 토대로 효율적인 시스템을 개발하는데 설계가 상당 부분 기여한다는 것을 몸소 느낄 수 있었고 효율적인 설계는 많은 변화를 이끌어 낼 수 있다는 것 또한 알게 되었습니다. 저는 이 경험을 바탕으로 설계작업에 더욱 적극적으로 참여하며 더욱 효율적인 시스템을 고안하기 위해 노력할 것이고, 진취적인 모습을 보여드리며 제 목표인 “효율적인 시스템을 개발하는 백엔드 엔지니어”에 한 발자국씩 다가갈 것입니다.
2. 체계적인 문서화를 통해 개발팀간의 시너지를 극대화 시키는 엔지니어
제가 생각하는 이상적인 협업의 시작은 자신이 맡은 부분뿐만 아니라 다른 도메인을 이해하는 것입니다. 기술연구를 하며 협업에서 문서화의 중요성을 깨달았습니다.
Depth Camera 사용방안에 관해 연구하는 프로젝트에 참여한 경험이 있습니다. 총 두 명의 개발자가 진행하였고, 전 SLAM 기술, 다른 한 명은 Facial 캡처에 관한 연구를 진행하면서 같은 SDK와 제품을 사용했습니다. 코드, 사용법 등 경험한 것들을 문서화시켜 svn으로 공유하고 서로 필요한 부분에 관해 얘기하며 정보를 공유했습니다. 그 결과 제가 필요로 하던 기능인 특정 거릿값의 데이터만 받아와 PCD로 매핑하는 기능을 구현하는 성과를 달성했습니다. 작성된 문서를 바탕으로 발표자료를 제작해 사내 발표 또한 성공적으로 마칠 수 있었습니다.
문서화를 통해 나온 성과를 몸소 체험하며, 문서화를 이용한 협업을 통해 성과를 끌어내는 개발자가 되기로 다짐했습니다. 또한, 체계적인 문서화를 통해 같은 팀뿐만이 아닌, 다른 개발팀과의 효율적인 협업을 도모할 것이고, 이를 통해 고객에게 최고의 서비스를 제공할 수 있도록 노력할 것입니다.
3. 도전과 끈기로 만들어진 “자수성가 마통령”
제가 가장 자신 있고 잘하는 것은 많은 시간, 노력이 들어도 포기하지 않고 마지막까지 해내는 것입니다.
대학교 교과 과정 중, 선수 과목을 수강하지 못한 채로 마이크로프로세서 과목을 수강한 경험이 있습니다.
첫 과제는 메모리값을 이용해 LPC1768 키트의 LED를 제어해보고, 보고서를 작성하는 과제였습니다. 우선 매뉴얼을 통해 메모리값의 비트가 무엇을 의미하는지 확인하였습니다. 이후 LED 8개를 차례대로 켜는 예제를 실행하고, Memory Map을 보며 바뀌는 값들을 확인했습니다. 구글에 검색도 해보고 값들을 모아 계속 비교해보기도 했습니다. 약 5일 정도 위 과정을 반복하며 원리를 찾기 위해 노력했습니다. 그 결과 16진수를 2진수로 변환한 후 4bit씩 나눴을 때 앞의 4bit가 불을 켜고 끔에 관여한다는 사실을 알게 되었습니다. 또한, PINSET, PINCLR의 비트값을 바꿔줌으로써 LED를 제어할 수 있다는 것과 메모리값은 한 쌍에 8bit씩 총 32bit로 하나의 핀을 이루고 있다는 것을 알 수 있었습니다. 추가로 핀맵에 적혀있는 주솟값과 비교를 통해 LED를 제어하는 GPIO가 포트1의 29, 30, 31번 핀과 포트2의 2,3,4,5,6번 핀으로 이뤄졌다는 사실도 알게 되었습니다.
이러한 노력은 제가 기초를 탄탄히 다지는데 밑거름이 됐고, 그 결과 매뉴얼만 보고도 메모리값을 유추할 수 있을 정도의 수준으로 발전했습니다. 이후에 배운 인터럽트나 타이머와 같은 기능들은 기초를 응용하여 쉽게 이해하고 해결할 수 있었습니다. 이러한 경험을 겪으며 의미 없어 보이는 노력을 의미 있는 결과로 만들어주는 것은 끈기라는 것을 크게 느꼈고, 제 끈기를 이용해 불가능해 보이는 상황에서도 노력으로 극복할 것을 다짐했습니다.
매력
- Express 프레임워크를 사용하여 프로젝트를 진행한 경험이 있습니다.
- macOS, Ubuntu 를 잘 다룰수 있습니다.
2-1. Ubuntu Server를 이용해 스마트공장 서버 배포를 담당했습니다.
2-2. Unix에 익숙해지기위해 맥북을 구매했습니다. - 스마트공장 프로젝트를 진행하며 고객을 위한 매뉴얼을 작성한 경험이 있습니다.
- 스마트공장 프로젝트를 진행하며 C#을 이용하여 프린터출력을 위한 소켓서버를 만들고 프로그램으로 만든 경험이 있습니다.
- nodejs와 socket.IO 를 이용해본 경험이 있습니다.
- Java를 이용하여, 실시간 테트리스를 구현해본 경험이 있습니다.
- AWS를 이용해 콘솔로 Express 프레임워크를 이용한 프로젝트를 배포한 경험이 있습니다.
- 새로운 것을 접하고 도전하는 것을 좋아합니다.
- 무엇이든 끈기를 가지고 해냅니다.
- 훈련소 다녀왔습니다.