Thumbnail
개발 · 프로그래밍 백엔드

백엔드 프레임워크 만들기 (개정판) 대시보드

(4.4)
5개의 수강평 ∙  208명의 수강생

55,000원

지식공유자: 제로
총 97개 수업 (14시간 41분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

초급자를 위해 준비한
[백엔드] 강의입니다.

프레임워크는 개발자에게 필요한 공통기능이 있는 그 자체로 실행 가능한 소프트웨어입니다.

✍️
이런 걸
배워요!
세상의 모든 프레임워크를 이해할 수 있는 지식과 경험
백엔드 기술 로드맵을 설명할 수 있는 능력
만드는 사람 시점으로 백엔드 프레임워크를 볼 수 있는 능력

백엔드 프레임워크,
내 손으로 직접 만들어봅시다! 🧰

이 강의는?

백엔드 프레임워크를 직접 만들어보고,
만드는 사람의 시선으로 세상의 많은 프레임워크를 쉽게 이해하고 사용해 보는 강의입니다.

왜 프레임워크를 직접 만들어봐야 할까요?

세상의 모든 프레임워크는
모두 똑같은 과정을 거쳐 만들어집니다.

세상에는 맛있는 음식이 많고
그 음식 덕분에 세상을 즐겁게 살아갈 수 있습니다.
그 맛있는 음식을 더 맛있게 먹을 수 있는 방법이 있습니다.
음식을 직접 만드는 겁니다.

물론 처음부터 잘 만들 수는 없습니다.
재료 조절에 실패하기도 하고, 냄비를 태울 수도 있습니다.
애써 만든 음식의 평가가 최악일 수도 있습니다.

하지만 실망하지 않고 반복해 도전하면
나만의 레시피가 완성되고, 
모든 사람이 맛있게 먹을 수 있는 음식을 만들 수 있습니다.

그런데 음식을 만들면서 얻은 경험과 지식은 여기서 그치지 않습니다. 
음식을 바라보는 눈이 달라집니다.
그 음식에 담긴 재료, 도구 그리고 만든 사람의 생각을 읽을 수 있는 능력이 됩니다.
그리고 나의 레시피를 훌륭하게 다듬을 지혜로 넓어집니다.

 

 

프레임워크를 만드는 것도 똑같습니다.
내가 프레임워크를 만든 경험과 지식은
다른 프레임워크에 담긴 기술과 지식,
그리고 그걸 만든 사람의 생각을 바르게 이해할 수 있게 해주고
내 역량을 깊게 만들어 줄 지혜가 됩니다. 

그렇기 때문에 프레임워크를 잘 사용하는 데 그치지 않아야 합니다.
다른 사람이 사용할 프레임워크를 직접 만들어봐야 합니다.

코드가 엉성해도 괜찮습니다.
당연히 오류가 발생할 수도 있습니다.
사용하는 사람의 불만이 있을 수 있습니다.

하지만 세상의 훌륭한 프레임워크는 똑같은 과정으로 만들어졌습니다.
부딪치고 문제를 확인하고 해결함을 반복하세요.
그런 과정은 지식과 경험을 얻게 해주고 몸 안의 지혜가 돼
개발자의 삶을 풍요롭게 해줍니다.


이 강의는

 

SW 재사용성을
위한 추상화

모듈 단위의
객체지향 패러다임

병행성, 직렬성 확보
트랜잭션

반드시 필요한
비기능 품질 속성

 

"백엔드 프레임워크 만들기"
아무것도 없는 상태에서 실제 업무에 사용될 수준의
백엔드 프레임워크가 완성되는 과정을 담고 있습니다.

SW공학의 기본 목표인 SW 재사용성을 위한 추상화,
실행 시점에 원하는 기능과 데이터를 가진 모듈을
사용할 수 있는 객체지향 패러다임,
병행성과 직렬성을 동시에 확보하기 위한 트랜잭션(Transaction),
개발자에게 반드시 제공되어야 할 비기능 품질 속성을 
프레임워크에 담는 과정과 경험, 그리고 지혜가 있습니다.

이 강의를 통해
나와 다른 사람이 작동하는 소프트웨어를 쉽게 만들 수 있게 해주는
프레임워크를 만들 용기와 노력을 냈으면 합니다.
그리고 그런 경험을 통해 개발자의 삶이 보다 풍요롭고 즐겁게 되길 소망합니다.


개정판 추가 내용

  • 게시판 프로젝트
    • 토이프로젝트의 기본 주제인 게시판과 백엔드 프레임워크가 같이 완성되는 과정을 설명
  • 방향성에 그치지 않고 완성된 프레임워크를 설명
    • 심화과정을 추가 실무에 필요한 프레임워크의 원리와 기능을 설명
    • 다른 프레임워크와 비교를 통해 프레임워크의 방향은 비슷함을 이해
  • 수강자를 고려한 강의
    • 임베디드톰캣, 실행환경 자동 구성
    • 이클립스, 인텔리제이 사용자를 위한 프로젝트/모듈 구성

학습 내용

  • 총 8개의 섹션으로 구성되어 있습니다. (오리엔테이션 제외)
  • 각 섹션은 생각해 볼 문제가 있습니다. 정답이 없는 문제이지만 고민하고 글로 표현해 보세요.
  • 프레임워크의 기능이 순차적으로 만들어지기 때문에 커리큘럼 순서대로 학습하는 것을 권장합니다.
  • (심화) 과정은 특정 기능에 대한 상세한 설명입니다.  기본 강의를 수강하신 후 들으시면 이해가 쉽습니다.
  • 강의에 사용된 소스 코드는 섹션별로 GitHub에 업로드되어 있습니다. (링크)
  • 질문은 언제나 환영합니다. (링크)

학습 과정 및 특징

섹션 1. 작동하는 소프트웨어를 쉽게 만들 수 있도록 준비합니다.
• 서블릿, MVC 아키텍처 스타일을 이해하고 프레임워크 관점으로 구현합니다.

섹션 2. 공통기능을 추상화하고 쉽게 사용할 수 있도록 구성합니다.
• 첫번째 공통기능인 HttpServletRequest 객체를 추상화하고 개발자가 쉽게 사용할 수 있도록 AOP 관점으로 리팩토링 합니다.

섹션 3. SQL 의존적인 개발을 제거합니다.
• SQL 의존적인 개발을 이해하고 이를 제거하기 위한 프레임워크 기능을 개발합니다.

섹션 4. 서비스 로직을 재사용할 수 있는 DI 와 IoC 를 구현합니다.
• 프레임워크가 반드시 가지고 있어야 할 기능인 DI와 IoC를 비즈니스 관점에서 생각해보고 구현합니다.

섹션 5. 인증과 접근제어를 구현합니다.
• 내가 누군지 증명하고 내가 할 수 있는 기능을 확인시켜주는 인증과 접근제어 기능을 구현합니다.

섹션 6. 개발자가 알아두면 좋은 지식 암호화
• 블록 비밀키 암호화 기술을 잘 사용할 수 있는 지식을 배우고 기능으로 구현합니다.

섹션 7. SW 특성을 이해할 로그기능을 구현합니다.
• 병렬/병행 환경으로 운영되는 시스템에서 SW 특성을 이해할 로그 기능을 구현합니다.

섹션 8. 우리가 만든 하나의 소프트웨어를 배포합니다.
• 절반인 백엔드 프레임워크를 실행하고 나머지 절반인 게시판 기능을 배포 확인합니다.

섹션 9. 부록 : 우리가 만든 프레임워크에 타임리프(Thymeleaf)를 사용할 수 있게 합니다.
• 잘 만들어진 프론트엔드 기술을 가져와 실행할 수 있게 구성합니다.


지금 도전하세요!

처음 시작은 단순하지만,
마지막엔 실무에서도 사용할 수 있는 
훌륭한 백엔드 프레임워크를 완성할 수 있습니다.

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
백엔드 프레임워크 원리를 알고 싶으신 분
개발자에게 필요한 이론을 이해하고 싶으신 분
개발자가 사용할 SW를 만들고 싶으신 분
📚
선수 지식,
필요할까요?
java 경험
dbms, 인터넷프로그래밍 경험

안녕하세요
제로 입니다.
제로의 썸네일
  • 20년 경력의 자바 개발자
  • 백엔드 프레임워크를 만들고 사용중인 지식과 경험이 있는 개발자
  • 세상의 비즈니스 요구사항을 잘 이해하고 작동하는 코드로 단순하게 표현할 수 있는 개발자
  • 세상의 모든 기술을 사용하는 사람 입장에서 쉽게 설명할 수 있는 정보처리기술사
커리큘럼 총 97 개 ˙ 14시간 41분의 수업
이 강의는 영상, 수업 노트가 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 오리엔테이션
우리가 앞으로 만들 기능을 설명합니다. 미리보기 07:56
이클립스 사용자를 위한 환경 구성 07:43
인텔리제이 사용자를 위한 환경 구성 08:37
용어집 미리보기
단독으로 프로젝트를 설정하는 방법 17:26
섹션 1. 작동하는 소프트웨어를 쉽게 만들 수 있도록 준비합니다.
섹션 2. 공통기능을 추상화 하고 쉽게 사용할 수 있도록 구성합니다.
생각해볼 문제
공통기능을 추상화 하고 쉽게 사용할 수 있도록 구성합니다. 15:59
WAS의 기능을 사용한 서비스 코드의 문제를 생각합니다. 03:23
입력과 출력 기능을 Box 로 추상화 하고 구현합니다. - Box, BoxLocal, BoxHttp 09:08
공통기능을 제공하는 방법 3가지 - ThreadLocal 07:44
추상화된 공통기능인 Box를 잘 사용할 수 있게 합니다. - BoxContext 07:18
WAS 가 없어도 실행할 수 있는 서비스 코드를 만듭니다. - Board 06:15
WAS 에 의존적인 서비스 코드를 확인합니다. - Board 05:19
생각해볼 문제의 답
(심화) 우리는 UTF-8 인코딩 규칙을 사용합니다. 09:46
(심화) 인터페이스와 구현클래스가 1:1 관계일때 인터페이스는 필요하지 않습니다. 29:34
(심화) 추상화된 공통기능인 Box를 더 사용하기 편하게 합니다. 11:58
(심화) XSS 공격을 방어합니다. 10:40
(비교) 입력/출력 기능 04:05
섹션 3. SQL 의존적인 개발을 제거합니다.
생각해볼 문제
DBMS 는 비즈니스 로직의 일관성과 무결성 그리고 영속성을 위해 사용됩니다. 24:16
트랜잭션 객체를 가져오는 방법. - CreateConncectionByJDBC_test 09:47
트랜잭션 기능을 구현합니다. - Transaction 09:37
Transaction을 공통기능으로 리펙토링 합니다. - TransactionContext 12:04
SQL 기능을 사용한(의존적인) 개발 - BoardByJDBC 18:36
SQL 실행 결과는 int 또는 Table 객체 입니다. 07:25
입력/수정/삭제 그리고 조회 SQL기능을 설계합니다. - SqlRunner_test 13:50
입력/수정/삭제 그리고 조회 SQL기능을 개발합니다. - SqlRunner 07:46
SQL 을 쉽게 찾을 수 있게 만듭니다. - Sql 04:33
SQL 의존을 제거합니다. - BoardByCode5 11:42
생각해볼 문제의 답
(심화) 아직 남아 있는 SQL 의존적인 문제를 제거합니다. 11:18
(심화) 여러개의 배열을 편하게 이용할 수 있도록 Table을 리펙토링 합니다. 05:14
(심화) 절대경로, 상대경로 그리고 기준경로 09:20
(심화) DTO는 내용결합을 발생시킵니다. 20:33
(비교) SQL 의존문제 04:57
섹션 4. 서비스 로직을 재사용할 수 있는 DI 와 IoC 를 구현합니다.
생각해볼 문제
지금까지 만든 프레임워크를 사용해 게시판을 구현합니다. - Board, Login 12:15
서비스 로직을 재사용할 수 있는 DI 와 IoC 를 구현합니다. 19:06
컴파일 없이 서비스 로직을 재사용 할 수 있게 합니다. - MasterController 06:35
구현한 DI 와 IOC 를 를 가지고 리펙토링 합니다. - Login 10:37
생각해볼 문제의 답
(심화) 높은 응집도를 위한 패키지/네이밍 규칙 12:52
(심화) IoC/DI 실행 비용을 개선합니다. 10:20
(심화) 프론트엔드와 협업합니다. 10:58
(비교) DI 와 IoC 03:00
섹션 5. 인증과 접근제어 기능을 구현합니다.
생각해볼 문제
기밀성, 무결성, 가용성 그리고 기술적 보안 12:30
내가 누군지 확인하는 인증 기능을 구현합니다 - SessionB, Login 10:37
인증과 접근제어 정보를 개발자가 자바코드로 표현하게 해줍니다. - ServiceAnnotation, MasterController 05:43
인증과 접근제어 기능을 사용합니다. - Board, BoardAdmin 06:44
생각해볼 문제의 답
(심화) 인증과 접근제어 기능을 확인합니다. 16:34
(심화) 오류가 발생했을때 사용자와 개발자는 서로 다른 정보가 필요합니다. 10:58
(심화) 접근제어 기능을 확장합니다 04:35
(심화) SessionB 객체가 세션에 저장되는 과정 12:15
(심화) 접근제어 정보를 뷰에 전달합니다. 04:10
(비교) 인증과 접근제어 03:31
섹션 6. 개발자가 알아두면 좋은 지식 암호화
생각해볼 문제
패스워드를 보호합니다. - CryptPin 07:02
개발자가 알아두면 좋은 지식 암호화 15:07
비밀키 블럭 암호화 알고리즘을 구현합니다. - Crypt, Crypt 구현클래스 07:46
실행 시점에 암호화 알고리즘을 결정하고 기능으로 제공합니다. - DataCrypt 06:32
암호화 기능을 적용합니다. 13:33
생각해볼 문제의 답
(심화)암호화 키 저장 위치 07:09
(심화)토큰기능을구현합니다 05:01
(심화)한줄문장이암호화되는과정 15:11
(비교) 암호화 기능 02:19
섹션 7. SW 특성을 이해할 로그기능을 구현합니다.
생각해볼 문제
SW 특성을 이해할 로그기능을 구현합니다. 17:47
로그를 공통기능으로 만듭니다. - Trace, TraceRunner 11:00
단일쓰레드 환경에서 로그 기능을 사용합니다. - InitCode5DBByDev 14:12
멀티쓰레드 환경에서 로그 기능을 사용합니다. - Trace_test 15:08
생각해볼 문제의 답
(심화) 필요한 로그만 기록하게 합니다. 08:44
(심화) 상호배제, 임계영역, 점유와대기 12:30
(비교) 로그기능 03:33
섹션 8. 우리가 만든 하나의 소프트웨어를 배포합니다.
실행환경을 준비합니다. 10:38
java를 컴파일합니다. 06:06
DB를 초기화 합니다. 03:50
절반인 백엔드 프레임워크를 실행하고 나머지 절반인 게시판 기능을 확인합니다. 07:05
섹션 9. 부록 : 우리가 만든 프레임워크에 타임리프(Thymeleaf)를 사용할 수 있게 합니다.
타임리프를이해합니다. 08:20
타임리프를 사용할 수 있게 준비합니다. 04:21
타임리프를 실행해봅니다. 08:25
타임리프가 필요한 클래스를 만듭니다. 10:25
우리가 만든 프레임워크에 타임리프를 사용할 수 있게 합니다. 19:38
강의 게시일 : 2021년 08월 30일 (마지막 업데이트일 : 2022년 04월 14일)
수강평 총 5개
수강생분들이 직접 작성하신 수강평입니다.
4.4
5개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
HanKyul Kim thumbnail
4
완강은 하지 않았지만 좋은 강의 같습니다. 완강 후에도 수강평을 또 달 수 있으면 후기를 적어보겠습니다 :)
2022-04-18
HanKyul Kim
한 번 등록된게 있으면 두 번은 안되네요. 완강 후 답글로 후기 달도록 하겠습니다!
2022-04-18
지식공유자 제로
완강 후 수강평 기대하겠습니다. ^^ 한 가지 이야기 드리고 싶은 건 강의 내용이 많다 보니 중간에 듣다가 멈추시는 분들이 많습니다. 강의 작성자 입장에선 정말 안타까운데요. 각 섹터 마다 지식을 정리하는 글 또는 질문을 올리면 지치지 않고 끝까지 흥미를 가지며 들을 수 있을 것 같습니다. 왜 이렇게 하는 걸까? 나 같으면 이렇게 할 텐데... 이 지식은 잘못된 것 같은데? 저 지식은 이렇게 응용하면 어떻게 될까? 등의 생각을 질문으로 올리고 답변을 얻어가고 마음에 안 들면 다시 질문하는 형태로 강의를 이용하면 좋을 것 같습니다. 강의 비용은 강의 피드백도 포함되어 있습니다. 적극 활용해 주세요. :) 감사합니다.
2022-04-19
netfly0 thumbnail
3
다시 한번도 봐야지 아직은 잘 정리가 안 됩니다.
2022-03-13
지식공유자 제로
안녕하세요. 제로입니다. 개정판 첫 수강평 감사합니다. 기술 서적은 어렵습니다. 첫번째 이유는 내가 모르는 지식이 생소하기 때문에 그 지식을 이해함에 시간이 걸리고 두번째 이유는 이전장에 읽었던 지식이 다음장을 이해할 경험으로 사용될때 까지 시간이 필요하기 때문입니다. 마지막으로 기술 서적은 단 시간에 읽을 수 없고 사람의 기억력은 망각 곡선이 있어 단기 기억은 금방 없어지기 때문에 오래전 읽었던 지식이 생소하게 느껴지기 때문입니다. 동영상 강의도 똑같은데요. 하지만 강의를 처음부터 끝까지 포기하지 않고 보면 상황이 달라집니다. 목차를 통해 내가 실제 필요한 기술을 찾아갈 기회가 생기거든요. 개발중 사용되는 IoC 지식이 필요하면 목차의 "서비스 로직을 재사용할 수 있는 DI 와 IoC 를 구현합니다." 선택해 다시 보면 되고 멀티쓰레드 환경에서 쓰레드 세이프티 한 코딩 방법이 필요하면 "멀티쓰레드 환경에서 로그 기능을 사용합니다." 선택해 응용하면 됩니다. 그래도 이해 안되면 강의를 만든 사람에게 물어보는 것도 괜찮구요. (질문 격하게 환영합니다.) 즉 기술 서적을 반복해서 볼 필요도 전체를 머리속에 정리할 필요가 없다는 거죠. 전체를 한번 봤으니 이후부턴 필요한 것만 선택해서 지식과 경험을 얻어가시기를 바랍니다. 제 강의를 끝까지 봐주신 것 정말 감사드립니다. 3점이 아쉽기는 하지만 강의를 끝까지 들어주시고 첫 수강평을 적어 주셔서 작은 선물(기프트콘)을 드리고 싶은데 강의 소개글에 있는 이메일로 회신 주시면 보내드리도록 하겠습니다.
2022-03-13
강태일 thumbnail
5
유익한 정보를 얻어 갑니다!
2023-10-31
지식공유자 제로
수강평 감사합니다.
2023-10-31
노형률 thumbnail
5
정말 유익한강좌였습니다!
2023-02-13
지식공유자 제로
수강평 감사합니다. ^^
2023-02-13
jetlifan thumbnail
5
개발에서 중요한 포인트를 전반적으로 알 수 있는 강의입니다. 프레임워크를 직접 만드는 과정을 보여주면서, 어떤 이유에서 구현이 어떻게 돼야 하는지를 설명해주시는데, 여기서 개발자로서 고민해야 하는 포인트를 알 수 있습니다.
2022-10-17
지식공유자 제로
안녕하세요. 제로입니다. 오랜만에 수강평이 달렸네요. ^^ 이전에 이야기 드린 내용이지만 영상으로 전달해 드린 지식과 경험을 머리속에만 담아두지 말고 코드로 글로 표현하길 바라겠습니다. 지식은 표현하면서 완성되고 경험은 표현한 지식이 남에게 전달되면서 완성되기 때문입니다. 다시 한번 수강평 감사드립니다.
2022-10-23