미리보기
기본 정보
소통과 끊임없는 학습으로 성장하는 개발자 김동훈입니다. - 한 번 시작한 일은 책임감을 가지고 끝까지 완수를 해야 하는 성격입니다. - 개발 과정에서 항상 사용자의 입장을 생각합니다. - 지속 가능한 프로그램을 위해 클린한 코드 작성과 유지보수를 중요하게 생각합니다.
기술 스택
Java, Spring, Spring Boot, JavaScript, jQuery, Oracle, mybatis, HTML/CSS, JSP, Docker
프로젝트
Spring 기반 기업용 그룹웨어
팀프로젝트
2024.07. ~ 2024.08.
전자결재, 일정관리, 메일, SNS, 사내 커뮤니티 및 피드형 게시판 등 필수적인 기능을 기획/제작한 기업용 그룹웨어 웹사이트입니다.
인원: 4
역할: 기능 구현, 화면 구현, DB 설계 및 관리
담당 기능:
DB 설계 및 관리
체계적인 데이터베이스 설계 프로세스 구현
기능 명세서 분석을 통한 필요 테이블 및 관계 도출
엑셀을 활용한 테이블 스키마 초안 작성 (컬럼명, 데이터 타입, 제약조건 등)
ERD CLOUD 툴을 사용한 시각적 데이터 모델링 및 관계 설정
성능 최적화를 위한 전략적 역정규화 구현
다대다(N:M) 관계 해소를 위한 연결 테이블 도입
조회 성능 향상을 위한 중복 데이터 허용
데이터 보안 및 무결성 강화
적절한 제약조건 설정 (Primary Key, Foreign Key, Unique, Not Null 등)
트랜잭션 관리를 통한 데이터 일관성 유지
접근 권한 설정을 통한 데이터 보안 강화
일정관리 기능
내 일정 / 공유 일정 분리하여 관리
공유하고 싶은 사원 선택하여 일정 공유
체크박스로 확인하고 싶은 일정만 확인할 수 있는 편리한 UI
드래그로 간단한 일정 수정
사내 커뮤니티 - 피드형 게시판 기능
커뮤니티 생성 및 관리 기능 구현 (이름, 소개, 공개/비공개 설정)
공개 커뮤니티 목록 조회 및 즉시 가입, 비공개 커뮤니티 초대 기능
텍스트, 이미지 포함 게시물 작성 및 좋아요, 댓글, 대댓글 기능
실시간 업데이트를 통한 새 게시물, 댓글, 좋아요 반영
즐겨찾기 및 내 커뮤니티 목록 관리 기능
커뮤니티 내 게시물 검색 기능 (제목, 내용, 작성자 등)
반응형 디자인 적용으로 다양한 디바이스 지원
비공개 커뮤니티 접근 제한 및 게시물/댓글 작성자 권한 관리
메일 기능
다양한 메일함 구현 (받은 메일함, 보낸 메일함, 내게 쓴 메일함, 중요 메일함, 임시 보관함, 휴지통)
메일 조회, 작성, 발송, 답장, 전달 기능 구현
파일 첨부 및 드래그 앤 드롭 지원
메일 상태 관리 (읽음/안읽음, 중요 표시, 삭제/복구)
고급 검색 및 필터링 기능 (발신자, 수신자, 제목, 내용 등)
JSP 기반 호텔 예약 웹사이트
팀프로젝트
2024.05. ~ 2024.06.
인원: 5
역할: 기능 구현, 화면 구현, DB 설계 및 관리
담당 기능:
DB 설계 및 관리
기능 명세서를 토대로 엑셀로 각 테이블의 키 설정 및 자료형, 제약조건 정리
ERD CLOUD를 사용하여 참조관계 설정 및 지속적인 수정
테이블 생성 및 더미 데이터 추가
결제 기능
포트원 결제 API를 활용한 카카오페이 결제 기능 구현
마이페이지
예약/결제 내역 확인 및 취소
내가 작성한 리뷰
문의 내역 및 답변 확인
개인정보 수정
포트폴리오
교육
구디아카데미
사설 교육 | 클라우드 활용 자바 개발자 양성과정
2024.02. ~ 2024.08. | 졸업
자기소개
개발자의 길을 선택한 이유
"왜 이렇게 만들었을까?"
이 질문은 제가 일상에서 마주치는 크고 작은 불편함들 앞에서 항상 던지던 질문이었습니다. 이러한 호기심은 저를 개발의 세계로 이끌었고, 기술을 통해 실생활의 문제를 해결할 수 있다는 점에서 개발자의 길을 선택하게 되었습니다.
이전 직장에서 경험한 비효율적인 시스템 에어컨 중앙 제어 프로그램과 일상에서 사용하는 애플리케이션들의 불편함은 제가 '사용자에게 실질적으로 도움이 되는 서비스를 만드는 개발자'가 되어야겠다는 결심의 계기가 되었습니다. 최근에 진행한 그룹웨어 프로젝트에서도 이러한 생각을 바탕으로 사용자 친화적인 기능들을 구현하기 위해 노력했습니다.
비전공자로서 백엔드 개발에 입문하는 과정은 쉽지 않았지만, 새로운 관점으로 문제를 바라보고 다양한 경험을 개발에 접목시킬 수 있다는 점이 강점이 되었습니다. 작년 8월부터 자바와 스프링 독학을 시작했고, 혼자 공부하는 것에 한계를 느껴 올해 2월부터는 구디아카데미의 자바 개발자 양성과정에 참여했습니다. 6개월간 웹 개발에 필요한 기본적인 기술 스택들을 익히고, 두 차례의 팀 프로젝트로 협업 능력과 실무 경험을 쌓았습니다.
앞으로도 계속해서 배우고 성장하여, 사용자들의 실제 니즈를 충족시킬 수 있는 서비스를 개발하는 백엔드 개발자가 되고자 합니다. 새로운 기술에 대한 관심과 문제 해결에 대한 열정을 바탕으로, 팀과 협력하여 실질적인 가치를 만들어내는 개발자로 성장해 나가겠습니다.
보유 역량 및 장점
비전공자로서 개발 분야에 늦게 진입한 만큼, 저는 남들보다 더 열정적으로 학습에 매진하고 있습니다. Java와 Spring을 중점으로 부족한 부분들을 채워나가고 있으며 또한 정보처리기사 자격증 취득을 목표로 체계적인 학습 계획을 세우고, 이를 실천하기 위해 수면 시간을 줄이며 매일 공부하고 있습니다. 이러한 노력을 통해 IT 분야의 기초부터 심화 지식까지 꾸준히 쌓아가고 있으며, 개발자로서의 역량을 날마다 향상시키고 있습니다.
자바 개발자 양성과정에서 MyBatis 프레임워크를 학습했고, 이를 실제 프로젝트에 적용하여 데이터 접근 방식의 효율성을 크게 개선했습니다. 예를 들어, 기존에 JDBC를 사용하여 직접 SQL 쿼리를 작성하고 결과를 매핑하던 방식에서, MyBatis의 XML 매퍼를 활용하여 SQL과 자바 객체 간의 매핑을 자동화했습니다. 이를 통해 코드의 가독성이 향상되고 유지보수가 용이해졌습니다. 또한, 동적 SQL 기능을 활용하여 검색 조건에 따라 유연하게 쿼리를 구성할 수 있게 되어, 애플리케이션의 성능과 확장성이 크게 개선되었습니다.
앞으로도 이러한 학습 태도를 유지하여 끊임없이 성장하는 개발자가 되고자 합니다. 새로운 도전을 두려워하지 않고, 항상 열린 마음으로 새로운 기술과 지식을 습득하여 더 나은 개발자로 성장해 나가겠습니다.
프로젝트 경험
저는 두 번의 프로젝트를 통해 웹 개발에 대한 폭넓은 경험을 쌓았습니다. 첫 번째는 JSP와 서블릿을 활용한 호텔 예약 웹사이트 프로젝트이고, 두 번째는 Spring Boot 기반의 그룹웨어 프로젝트입니다. 이 과정에서 다음과 같은 핵심 능력들이 크게 향상되었습니다.
1. 결제 시스템 구현 및 API 연동: 호텔 예약 프로젝트에서 카카오페이 API를 활용하여 실제 결제 기능을 구현했습니다. AJAX를 활용한 비동기 데이터 처리 능력을 크게 향상시켰으며, 결제 정보의 안전한 처리와 저장 과정에서의 위변조 검증 등 보안의 중요성을 깊이 이해하게 되었습니다.
2. 사용자 인증 및 세션 관리: 호텔 예약 프로젝트에서 로그인 상태 유지와 사용자 인증을 위한 세션 관리 기능을 구현했습니다. 그룹웨어 프로젝트에서는 Spring Security를 활용하여 더 강력한 사용자 인증 및 권한 관리 시스템을 구축했습니다.
3. Spring Boot와 MyBatis를 활용한 데이터 처리: 그룹웨어 프로젝트의 일정 관리 기능 구현 시, Spring Boot와 MyBatis를 연동하여 효율적인 데이터 접근 계층을 구축했습니다. 특히, 동적 SQL을 활용하여 복잡한 일정 조회 쿼리를 구현했습니다. 예를 들어, 사용자 권한에 따라 조회 가능한 일정을 동적으로 필터링하는 쿼리를 작성하여, 한 번의 데이터베이스 호출로 필요한 모든 정보를 효율적으로 가져올 수 있었습니다. 이를 통해 데이터베이스 접근 횟수를 줄이고 애플리케이션의 응답 속도를 크게 개선할 수 있었습니다.
4. RESTful API 설계 및 구현: 일정 관리 기능의 CRUD 작업을 위해 RESTful API를 설계하고 구현했습니다. HTTP 메서드(GET, POST, PUT, DELETE)를 적절히 활용하여 리소스에 대한 작업을 명확히 정의했고, 응답 코드를 통해 요청의 성공/실패 여부를 명확히 전달했습니다. 이러한 설계를 통해 프론트엔드와 백엔드 간의 명확한 인터페이스를 제공하여 개발 효율성을 높이고, 향후 모바일 앱 개발 등 확장성을 고려한 구조를 만들 수 있었습니다.
5. 협업 및 버전 관리: Github와 노션 그리고 Sourcetree를 사용하며 버전 관리와 협업 경험을 쌓았으며, 코드 리뷰를 통해 코드 품질 향상에 노력했습니다.
이러한 경험과 지식을 바탕으로, 저는 실제 업무 환경에서도 빠르게 적응하고 효율적으로 문제를 해결할 수 있는 개발자로 성장하고자 합니다. 부족한 부분과 기술을 끊임없이 학습하고, 이를 실제 프로젝트에 적용하여 끊임없이 성장하는 개발자가 되겠습니다.
입사 후 포부
귀사에 입사하게 된다면, 제가 쌓은 프로젝트 경험과 꾸준한 학습 의지를 바탕으로 다음과 같은 목표를 가지고 업무에 임하고자 합니다:
1. 지속적인 학습과 기술 역량 강화:
호텔 예약 프로젝트와 그룹웨어 프로젝트에서 얻은 경험을 토대로, 새로운 기술과 분야에 적극적으로 학습하겠습니다. 회사의 기술 스택을 빠르게 습득하고, 선배 개발자들의 조언을 귀담아들어 실무 능력을 지속적으로 향상시키겠습니다.
2. 사용자 중심의 개발 마인드 함양:
프로젝트 경험에서 얻은 사용자 중심 설계의 중요성을 바탕으로, 항상 최종 사용자의 입장에서 생각하는 개발자가 되겠습니다. 사용자 피드백을 적극적으로 수용하고, 요구하는 바를 명확히 이해하여 이를 개선에 반영하는 능력을 키우겠습니다.
3. 코드 품질 향상에 대한 노력:
GitHub을 통한 버전 관리와 코드 리뷰 경험을 살려, 깔끔하고 유지보수가 용이한 코드 작성 능력을 키우겠습니다. 선배 개발자들의 코드를 학습하고, 클린한 코드를 작성하기 위해 노력하겠습니다.
4. 팀 협업 능력 개발:
프로젝트에서의 협업 경험을 바탕으로, 팀 내 의사소통 능력을 더욱 발전시키겠습니다. 적극적으로 질문하고 의견을 나누며, 팀의 목표 달성에 기여하는 신뢰할 수 있는 팀원이 되겠습니다.
5. 보안과 성능에 대한 이해도 증진:
결제 시스템 구현 과정에서 얻은 기초적인 보안 지식을 바탕으로, 정보 보안의 중요성을 항상 염두에 두고 개발하겠습니다. 또한, 시스템 성능 최적화에 대한 학습을 지속하여 효율적인 애플리케이션 개발 능력을 키우겠습니다.
이러한 목표를 바탕으로, 저는 귀사에서 배움의 자세로 임하며 빠르게 성장하는 개발자가 되고자 합니다. 주어진 업무에 최선을 다하면서 동시에 새로운 기술 트렌드를 파악하고 학습하여, 회사의 발전에 기여할 수 있는 인재로 거듭나겠습니다.