OKdevTV Docs
Home OKdevTV
ESC
curriculum 8 min read 12.8 KB Raw Markdown
On this page (12)

#Java Web Dev Camp

요청사항

  • 강의 결과물 시각화(gif or jpg), 가로 800 정도

  • 홍보에 쓰일 허광남님의 고화질 사진

  • ‘수강생 여러분께 드리는 말씀’ 을 5~7문장 정도

  • 허광남님 약력(또는 약력을 볼 수 있는 페이지)

  • 일정 : 9/12(화) ~ 11/9(목)

  • 시간 : 매주 화, 목 저녁 7:30~10:30(주 6시간)

  • 휴강 : 10/3, 10/5(추석 주)

  • 장소 : 패스트캠퍼스 신관 화:5C, 목:6C강의실

  • 커리큘럼

  • 수강대상

  • 이 강의를 통해 가져다 줄 수 있는 가치?

  • 결과물

[쿠폰 사용법] https://okdevtv.com/mib/intellij/classroom

[Q&A]

eclipse/intellij 사용시 특히 eclipse는 무거워서 노트북 최소 사양이 필요하지 않을까 한데, 알려주시면 감사하겠습니다.

A: 메모리 3G 이상 여유, 8G 권장

이 강의에서 다루고자 하는 목표가 무엇일까요?

A: 자바 개발에 유용한 기법들을 소화할 수 있습니다. 국내 가장 일자리가 많은 자바 프로젝트에 도움이 되는 기술들을 다룹니다. 특히 기업에서 많이 사용하는 오픈소스 제품들이 자바 기반인 경우가 많은데, 이 도구들을 쉽게 다룰 수 있게 됩니다.

수강대상

  • 자바 웹 서비스를 만들기 원하는 분
  • 스프링 프레임워크를 사용하기 원하는 분
  • 오픈소스 자바 패키지를 쉽게 사용하기 원하는 분
  • JDK 1.8까지 자바 추가된 기능을 업데이트 하고 싶은 분
  • 모바일 API 서버 구축을 원하는 분
  • Java 웹 개발자로 취업을 희망 / 역량 강화를 원하는 1~2년차 개발자
  • 전자정부 표준 프레임워크에 대한 이해가 필요한 분

수강조건

  • 자바 언어 학습
  • HTML/CSS/JavaScript 기본 지식

가치

강의의 특징

  • 짧은 동영상으로 사전학습을 하고, 강의는 참여형으로 진행
  • 자바 프로젝트의 라이프사이클을 경험
  • 스프링 입문자를 위한 쉬운 가이드
  • 웹 애플리케이션의 보안, 성능, 품질을 관리하는 도구 사용

결과물

  • 자바 기반의 웹 게시판
  • 스프링 기반의 Single Page Application 스타일 포토갤러리
  • (레거시 코드의 빠른 적응력)

도구 선정

  • 설득, 이유, 대체
  • 이클립스, 인텔리제이 툴 비교

커리큘럼 리뷰

참고

커리큘럼

0 - 1 : 공유문서를 이용한 사전 학습 준비

  • JDK1.8, Spring Tools Suite
  • aws, GitHub, Chrome Browser 학습을 위한 개발 환경을 직접 구축해서 준비합니다. 윈도우, 맥, 리눅스(Ubuntu, CentOS)에 대한 개별 가이드를 동영상으로 제공합니다. aws.amazon.com, github.com 에 ID를 만들어 학습 준비를 합니다.

개발 환경 가이드

1주차 : 강의 목표와 학습 방법, 로컬 개발 환경과 원격 서버 배포 화: 강의 오리엔테이션, 자바 개발 환경 구성, 첫 자바 프로젝트 목: 버전관리도구 git, 리눅스 클라우드 서버 구성, 프로젝트 배포 프로젝트: Simple Board #1 Basic in/out 8주간 16차례 진행될 강의에 대한 학습 방법과 개발 환경 구성에 대한 설명으로 시작합니다. 자바 프로젝트를 만들어서 빌드하고 실행하는 법을 학습합니다. 버전관리도구의 기본적인 사용법과 aws에 만들어진 애플리케이션을 올려 봅니다. 가장 기본적인 얼개인 Simple Board 게시판 프로젝트를 구성하고 배포합니다.

2주차 : 웹 프로토콜 기본과 서블릿 컨테이너 Tomcat 화: HTTP/HTTPS 메커니즘, HTML/CSS/JavaScript 목: JSP/서블릿 라이프사이클, Tomcat 아키텍처, WAR 기본 프로젝트: Simple Board #2 Web UI 무심코 사용했던 HTTP/HTTPS 메커니즘을 이해하고, 이 프로토콜 위에서 동작하는 웹 페이지의 기본 구성 요소인 HTML, CSS, JavaScript에 대해서 알아봅니다. JSP와 서블릿의 라이프사이클을 이해하고, 가장 많이 사용되는 서블릿 컨테이너인 Tomcat의 아키텍처와 WAR 파일의 구성과 활용법을 다룹니다. Simple Board의 UI를 개선해 봅니다.

3주차 : 프론트엔드 기술과 웹API, DB 연결하기 화: jQuery, Ajax, 크롬 개발자 도구, 웹API 목: DB CRUD, JDBC Connector 프로젝트: Simple Board #3 DB features 프론트엔드 개발에서 가장 많이 사용하는 jQuery와 이를 통한 Ajax 통신을 다루고, 크롬 개발자 도구를 통해 웹 페이지의 각 부분을 명확하게 개발하는 법을 알아 봅니다. 웹 API란 무엇이고, 어떻게 다루는지 학습합니다. DB를 통해 데이터를 관리하는 법과 JDBC Connector로 자바에서 DB의 정보를 어떻게 이용하는지 학습합니다. DB와 웹 API를 통해서 Simple Board의 기본적인 기능을 완성합니다.

4주차 : 테스트, 빌드 자동화와 지속적인 통합 화: JUnit과 디버깅, 빌드 도구 Maven, 빌드 자동화 목: 지속적인 통합 도구 Jenkins, Jenkins를 통한 배포, eclipse/intelliJ 비교 프로젝트: Photo Gallery #1 단위 테스트를 통해서 기술 부채를 줄이는 방법을 알아 봅니다. 디버깅은 프로그래밍의 과정 중에 모호성을 최대한 없앨 수 있는 방법입니다. 빌드 도구 Maven으로 IDE가 없는 환경에서도 빌드할 수 있게 합니다. 지속적인 통합 도구인 Jenkins를 통해서 프로젝트 관리하는 법을 알아 봅니다. eclipse와 intelliJ를 비교해서 두 가지 도구를 쉽게 사용할 수 있도록 합니다. 사진 갤러리 프로젝트를 새로 시작합니다. 파일 업로드가 가능한 게시판의 확장입니다.

5주차 : Spring 프레임워크 핵심, Spring MVC 화: IoC/DI, 스프링 프레임워크 특징 목: Spring MVC, Spring JDBC 프로젝트: Photo Gallery #2 자바 웹 프로젝트의 사실상 표준이라고 할 수 있는 스프링 프레임워크의 기본 원리를 학습합니다. 스프링 프로젝트 중에서 가장 많이 사용되는 Spring MVC와 Spring JDBC를 학습하고 활용법을 학습합니다. 기존 아무 프레임워크도 사용하지 않은 프로젝트에 스프링 프레임워크를 적용해 장단점을 알아봅니다.

6주차 : Java 8 Update, Sprint Boot 화: Java8 Lambda, 새로운 기능 목: Spring Boot 프로젝트: Photo Gallery #3 자바 언어가 1.5에 이어 1.8에 두 번째로 크게 문법이 추가되었습니다. Java 8에 추가된 언어적인 특징을 확인합니다. 임베디드 서버, 보안, 메트릭을 지원하는 Spring Boot에 대해 학습합니다. Spring Boot를 통해 빠른 개발이 가능해졌습니다. 사진 갤러리 프로젝트에 새로운 기능을 추가해서 업그레이드 합니다.

7주차 : 스프링 아키텍처와 스프링 스택 화: 스프링 아키텍처 개요와 AOP 목: 스프링 스택의 프로젝트별 특징과 활용, Spring Social 프로젝트: Photo Gallery #4 Spring의 여러 프로젝트들을 알아보고, 어떤 분야에 적용할 수 있는지 설명합니다. Spring Social을 이용해 소셜 로그인 기능을 구현합니다. 사진 갤러리 프로젝트에 소셜 로그인 기능을 추가합니다.

8주차 : 웹 애플리케이션 보안, 성능, QA 진단 화: OWASP, 웹 보안 진단 도구와 이슈 해결법 목: Jmeter, 스타우터 성능 진단 도구, SonarQube 오픈 웹 애플리케이션 보안 프로젝트인 OWASP의 10대 보안 취약점을 이해하고, 웹 보안 진단 도구인 Zed Attack Proxy를 통해 취약점의 분석과 해법을 알아봅니다. Jmeter를 통해 성능이 어떤지 진단하고, 스타우터를 통해 웹애플리케이션을 깊게 모니터링할 수 있습니다. SonarQube를 이용해 코드 품질을 관리하는 방법을 학습합니다. 사진 갤러리 프로젝트를 진단하고 처방하여 품질을 높일 수 있습니다.

0 - 1 : 공유문서를 이용한 사전 학습 준비

이 장을 마치면 할 수 있는 것:

  • 자바 개발 환경 만들기. 윈도우, 맥, 리눅스(ubuntu, centos)
  • aws 계정으로 최초 1년간 무료 서버를 만들기
  • GitHub 개인 프로필 페이지 확인
  • 크롬 브라우저를 설치하고 개발 모드 전환하기

1주차 : 강의 목표와 학습 방법, 로컬 개발 환경과 원격 서버 배포

이 장을 마치면 할 수 있는 것:

  • 로컬에 자바 개발 환경과 개발 도구 설치하기
  • 자바 프로젝트를 만들기
  • 메이븐 구조의 자바 웹 프로젝트 만들기
  • git 기본 사용하기
  • aws EC2 서버 환경 만들기
  • 자바 서버 설치하고 웹 프로젝트 배포하기
  • 자바 프로젝트 빌드하기

2주차 : 웹 프로토콜 기본과 서블릿 컨테이너 Tomcat

이 장을 마치면 할 수 있는 것:

  • http, https의 차이점을 알고 구성하기
  • tomcat과 nginx 웹서버 Proxy 연결하기
  • HTML/CSS/JavaScript 역할에 따라 사용하기
  • 서블릿 컨테이너의 라이프사이클 이해하기
  • WAR 파일의 구성을 이해하고 프로젝트에서 WAR 만들기
  • WAR 파일을 서버에 배포하기

3주차 : 프론트엔드 기술과 웹API, DB 연결하기

이 장을 마치면 할 수 있는 것:

  • jQuery로 페이지 수정하기
  • Ajax 통신으로 데이터를 가져와 출력하기
  • 크롬 개발자 도구로 HTML/CSS/JavaScript 분석하기
  • 웹 API를 가져와 페이지에 표시하기
  • JSONP로 도메인이 다른 콘텐츠 가져오기
  • 데이터베이스의 기본적인 설치하기
  • 테이블을 만들고 데이터 입출력하기
  • 자바로 데이터베이스에 데이터를 저장하고 가져오기

4주차 : 테스트, 빌드 자동화와 지속적인 통합

이 장을 마치면 할 수 있는 것:

  • 단위테스트를 만들고, 결과 리포트 확인하기
  • 자바와 JavaScript 디버깅하기
  • Maven으로 프로젝트 생성하기
  • 자바 프로젝트를 Maven으로 빌드하기
  • Jenkins를 설치하고 새 작업 만들기
  • Jenkins에서 프로젝트 빌드하기
  • Jenkins를 통해서 AWS 서버에 소스 배포하기
  • eclipse와 intelliJ의 차이점과 단축키 사용법 구분하기

5주차 : Spring 프레임워크 핵심, Spring MVC

이 장을 마치면 할 수 있는 것:

  • 스프링 프레임워크로 프로젝트를 생성하기
  • 스프링 MVC로 웹 애플리케이션 만들기
  • JDBC 코드를 스프링 버전으로 마이그레이션 하기
  • Spring JDBC 이용하기
  • 레거시 자바 웹 프로젝트를 Maven 구조로 전환하기

6주차 : Java 8 Update, Sprint Boot

이 장을 마치면 할 수 있는 것:

  • Java 8의 대표적인 기능인 Lambda를 사용하기
  • 개선된 날짜 시간 API 사용하기
  • 서버에서 JavaScript 코드 실행하기
  • Spring Boot 프로젝트 특징 이해하기
  • Spring Boot 기반의 빠르고 간단히 웹 서비스 만들기

7주차 : 스프링 아키텍처와 스프링 스택

이 장을 마치면 할 수 있는 것:

  • 스프링 모듈의 상관관계를 이해하기
  • 20가지 모듈의 구성과 활용 영역 구분하기
  • AOP로 로깅하기
  • 트랜잭션 처리에 AOP 적용하기
  • Spring Social로 OAuth2 기반의 소셜 로그인 구현하기

8주차 : 웹 애플리케이션 보안, 성능, QA 진단

이 장을 마치면 할 수 있는 것:

  • 웹 보안의 10가지 취약점 이해하기
  • ZAProxy로 웹 애플리케이션 취약점 진단하기
  • 취약점 해결하는 방법 확인하고, 패치하기
  • JMeter로 성능 진단하기
  • 스타우터로 병목 구간 찾아내기
  • SonarQube로 자바, 자바스크립트 코드 품질 검사하기

프로젝트 소스

  • Simple Board
  • Photo Gallery

이 강의를 들으시는 분들에게

이 강의를 준비하면서 국내 대부분의 기업에서 유독 많이 사용되는 자바 웹 기술을 다시 생각하게 되었습니다. 소프트웨어 중심 사회로 가고 있기 때문에 기업의 소프트웨어 역량은 나날이 그 중요성을 더해 갑니다. 자바 웹 개발자로 서비스를 만든다는 것은 오픈소스 생태계를 얼마나 잘 이용하느냐와도 관계가 있습니다. 단순히 언어만 마스터하고 마는 것이 아니라, 서비스의 품질을 고려한 좋은 개발 방법이 무엇인지, 효과적인 협업은 어떻게 진행되는지 저의 경험과 좋은 도구들을 함께 나누고 싶습니다.

약력 Kenu 허광남 現 okdevtv.com 프로그래밍 방송 BJ 現 okky.kr 사이트 공동대표

  • 일 방문 40,000명의 국내 주요 개발자 커뮤니티 前 '15~'17 GS SHOP 벤처투자팀 CoE 파트 前 '12~'16 전자정부 표준프레임워크 에반젤리스트