오픈오브젝트 멘토링 수행(웹서버개발자)
회사에 신입사원에 대한 멘토링 제도가 도입되었다.
멘토링 제도는 신입사원 들어오면 3개월간 멘토를 선정하여, 업무에 잘 적응할수 있도록 하는 제도이다.
멘토링을 진행한 경험을 바탕으로 신입서버개발자 멘토링 커리큘럼을 공유한다.
멘토링을 진행하면 간단한 프로젝트를 진행하며 개발에 대한 피드백을 진행할 예정이다.
오리엔테이션 - 신입 개발자와 멘토링 시작
- SI 프로젝트의 진행과정은 어떻게 될까?
- 제안요청 및 작성, 요구사항 수립, 분석/설계, 개발, 테스트, 오픈, 안정화등등 진행과정에 소프트공학에 대해 알아본다. (by.최호남 부장님)
- SI 프로젝트에 투입이 되면 누구와 어떤일을 할까?
- 프로젝트 투입되면 하게되는 대응하는 업무와 카드사 인프라 구조를 설명한다.
- 서버개발자가 프로젝트에서 해야할일. feat.서버개발자 시점
- 서버개발자가 코딩시에 고려해야 될 점, 개발 외적으로 신경써야하는 부분에 대한 점을 설명한다.
1개월차 - 웹 개발 기본 구성 및 실습
프로젝트 환경
- server : Linux + Tomcat
- server framework : spring legacy + maven
- db : maria DB
- css framework : bootstrap
- 소스형상관리 : git (github)
- 서버배포 도구 : jenkins
- 기타 : wireshark
1-1~2 주차 - Java EE 웹 개발 학습 및 실습
채택 서적 : 열혈강의 자바 웹 개발 워크북
채택 이유 : 웹개발에 대해서 알아야 할내용은 끝이 없다. 이 책에는 개발을 진행할떄, 필수적으로 알아야할 내용을 실습을 통해 설명해준다.
해당 책은 웹에대한 설명과 spring + mybatis 실습을 할수 있게 구성되어 있다.
금융권 SI는 시스템에 대해 안정성을 추구 하고, 보수적인 편이라서 개발의 비교적 새로운 기술들(string boot, jpa, vue 등) 을 진행하기보다 보편적인 개발 기술로 정하였다.
- 목표: servlet, spring, db 구성 스터디 및 실습
- 과제: servlet과 srping에 이해와 실습을 통해서 DashBoard 프로젝트 환경을 구성한다.
1-3 주차 : DashBoard 프로젝트 생성 및 DB연동, 테이블 설계
- 목표: spring 프레임워크로 프로젝트를 생성하고 테이블을 설계 및 WAS <-> DB Server 간 연동
- 과제: 회원 관리, 로그인 처리를 위한 DB설계 및 회원가입, 로그인 로직을 구현한다.
1-4 주차 : 게시판 화면 구성
- 목표: bootstrap templete 를 활용하여 게시판 화면을 구성하고, 입력한 정보에 대해서 CRUD를 수행
- 과제: 게시판 필요한 DB 설계 및 등록/조회/변경/삭제 로직 및 페이지를 구현한다.
추가 멘토링
- 목표: 관리자 프로젝트 생성 및 개발
- 과제: DashBoard 프로젝트를 관리하는 로그인 권한, 게시판 권한관리 기능을 구현한다.
1개월차를 마치며
기본적인 Java 웹 개발에 대하여 학습하고, DashBoard 프로젝트 생성 및 테이블 설계를 통한 기본적인 로그인, 게시판 기능을 개발하였다.
이어지는 차수부터는 1개월차에 생성한 DashBoard 프로젝트를 배포하기 위한 CI/CD를 구성 및 실습을 진행할 예정이다.
2개월차 - CI/CD 구성 및 실습 (DashBoard 프로젝트 배포)
2-1 주차 : 리눅스서버에 프로젝트 배포(1/2)
- 목표: 리눅스 환경 적응 및 명령어를 숙달하고 서버환경을 구성 및 서버 배포를 한다.
- 과제: 윈도우(로컬 PC)에서 서버 환경을 리눅스(사내 aws)에 구성한다.
tomcat, jenkins, maven, git, java등을 리눅스 환경에서 설치한다.
github 소스를 리눅스 서버에 내려받아 빌드 및 서버를 구동시킨다.
2-2 주차 : 리눅스서버에 프로젝트 배포(2/2)
- 목표: 서버 배포를 shell로 자동화 한다.
- 과제: 2-1주차에서 진행한 서버를 배포(start, stop, git pull, build 등을 수행)
하는 shell(bash) 프로그램을 작성한다.
2-3 주차 : 자동배포 환경 만들기(1/2)
- 목표: 서버 배포를 젠킨스를 사용하여 자동화 한다.
- 과제: 젠킨스 설치 및 환경 구성하고, github와 연동하여 자동배포 환경을 구성한다.
2-4 주차 : 자동배포 환경 만들기(2/2)
- 목표: 서버 배포를 젠킨스 CI/CD를 사용하여 자동화 한다.
- 과제: 2-3주차에서 진행한 젠킨스 자동배포 환경을 젠킨스 CI/CD를 사용하여 자동배포 환경을 구성한다.
2개월차를 마치며
지금까지 DashBoard 프로젝트를 생성하고, 리눅스서버에 자동배포 환경을 구축해보았다.
이클립스나 기타 에디터 Tool에서 자동으로 해주는 빌드 및 실행등을, 리눅스에서 직접 구성해보면서 서버환경에 대한 이해가 높아졌을것이다.
다음 차수부터는 HTTP 프로토콜 규격, TCP/IP 및 SSL/TLS Handshake 등을 학습하며, 디버깅을 통해서 HTTP 통신에 대한 이해도를 높여보도록 하겠다.
3개월차 - HTTP 통신에 대한 이해
3-1 주차 : HTTP 통신 규격
- 목표: 웹개발에 필요한 HTTP 통신의 요청/응답, 해더/바디 및 쿠기에 대한 규격을 공부한다.
- 과제: Java 프로그래밍으로 DashBoard 프로젝트와 HTTP 통신 프로그램을 개발한다.
로그인을 세션을 유지하기 위한 쿠키관리 및 HTTP Header 정보를 이해한다.
3-2 주차 : HTTP 데이터 전송과 규격
- 목표: HTTP 통신에서 데이터가 어떻게 전송되는지 확인하고, 데이터 처리 방법에 대해서 이해한다.
- 과제: 3-1주차에 개발한 HTTP 통신 프로그램과 DashBoard 서버에 File Upload, input/json Data, 한글 및 암호화 값 등을 처리하도록 API를 개발한다.
다양한 타입에 데이터를 처리하면서, Content-Type과 URL인코딩 및 Base64가 왜 필요한지 확인한다.
3-3 주차 : TCP/IP, SSL,TLS 에 대한 이해
- 목표: TCP/IP 통신과 SSL/TLS를 학습하고, HTTP와 어떤 관계가 있는지 확인한다.
- 과제: 3-1주차에 개발한 프로그램에, SSL/TLS를 적용하여 HTTPS 통신 프로그램을 구현한다.
SSL HandShake 및 암호화 방법을 학습하고, 어떻게 HTTP 데이터를 보호하는지 확인한다.
3-4 주차 : 웹, TCP 디버깅(크롬 개발자도구, WireShark)
- 목표: 크롬 개발자도구에서 웹 페이지 대한 디버깅을 숙달한다.
HTTP 통신을 위해 어떤 동작들을 하는지 Packet Dump로 확인하여, 실제 데이터에 흐름을 본다.
- 과제: 크롬 개발자도구를 통해서 Applcation 정보를 확인하고,
WireShark 프로그램을 통해서 Network 데이터에 Packet을 확인해본다.
지금까지 사용한 HTTP 통신에 대한 데이터 흐름을 이해한다.
멘토링을 마치며
지금까지 서버에 대한 개발/환경/통신에 대한 멘토링을 진행했다.
멘토링을 통해서 배운 지식은 서버개발자로써 기본이 되는 지식일 것이다.
프로젝트에 투입되어서 환경에 따라 다른 기술들을 사용할수도 있겠지만, 기본 개념을 잘 숙지한다면 다른 기술을 습득하는게 어렵지 않을 것이다.
기본의 충실한 개발자 되자.
Leave a comment