Thumbnail

백엔드 프레임워크 만들기 대시보드

(3.7)
3개의 수강평 ∙  69명의 수강생
공개되지 않은 강의로
수강이 제한됩니다.
지식공유자: 제로
총 54개 수업 (9시간 18분)
수강기한: 
무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변: 미제공

절반만 만들어진 실행할 수 있는 소프트웨어인 프레임워크를 만들 수 있는 지식과 경험을 배울 수 있습니다.

✍️
이런 걸
배워요!
세상의 모든 프레임워크를 이해할 수 있는 지식과 경험
백엔드 기술 로드맵을 이해할 수 있는 능력
만들어진 기술을 잘 사용하는데 그치지 않고 좀 더 발전시키는 능력

백엔드 프레임워크 만들기 개정판 으로 오세요.

백엔드 프레임워크를 직접 만들어보고,
성장하는 개발자로 거듭나보세요! 🧰 

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

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

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

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

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

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

 

 

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

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

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

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


이 강의는

 

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. 비기능 요구사항은 개발자가 사용하는 소프트웨어 기능입니다.
• 프레임워크는 개발자의 요구사항인 비기능 품질속성을 만족하는 절반만 만들어진 실행 가능한 SW이고 완성될 수 없는 SW입니다. 비기능 품질속성에 대해 알아보고 앞으로 추가될 기능에 대해 생각해 봅니다.


지금 도전하세요!

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

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
백엔드 프레임워크 원리에 대해 궁금하신 분
개발자가 사용할 SW를 만들고 싶은 분
개발자에 필요한 이론을 실무 관점에서 이해하고 싶으신 분
📚
선수 지식,
필요할까요?
Java: 기본적인 문법
SQL: 기본적인 DML, DDL
JSP를 사용해본 경험

안녕하세요
제로 입니다.
제로의 썸네일
  • 20년 경력의 자바 개발자
  • 백엔드 프레임워크를 만들고 사용중인 지식과 경험이 있는 개발자
  • 세상의 비즈니스 요구사항을 잘 이해하고 작동하는 코드로 단순하게 표현할 수 있는 개발자
  • 세상의 모든 기술을 사용하는 사람 입장에서 쉽게 설명할 수 있는 정보처리기술사
커리큘럼 총 54 개 ˙ 9시간 18분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 2. 공통기능을 추상화 하고 쉽게 사용할 수 있도록 구성합니다.
공통기능을 추상화 하고 쉽게 사용할 수 있도록 구성합니다. 12:00
WelcomeC.execute(HttpServletRequest request)를 테스트 하는 코드를 만듭니다. 04:27
입력과 출력 기능을 Box 로 추상화 하고 구현합니다. - Box, BoxLocal, BoxHttp 06:28
공통기능인 Box 를 제공하는 방법 3가지 - ThreadLocal 04:29
추상화된 기능인 Box 를 잘 사용할 수 있게 제공합니다. - BoxContext 11:25
WelcomeC.execute()를 테스트 하는 코드를 만듭니다. 05:24
테스트한 코드를 WAS 에서 확인합니다. 04:05
생각해볼 문제
섹션 3. SQL 의존적인 개발을 제거합니다.
DBMS 는 비즈니스 로직의 일관성과 무결성 그리고 영속성을 위해 사용됩니다. 19:35
트랜잭션 기능을 구현합니다. - Transaction 12:35
Transaction을 AOP 관점으로 리펙토링 합니다. - TransactionContext 05:33
멀티쓰레드 환경에서 제공되는 Transaction을 구현합니다. - MasterController 04:41
SQL 의존적인 개발 - EmpByJDBC 18:47
SQL 결과는 Table 입니다. 05:33
TDD 관점으로 SQL 기능을 설계합니다. - SqlRunner_test 10:01
SQL 기능을 개발합니다. - SqlRunner 16:30
SQL 의존적인 개발을 제거합니다. - EmpByCode5 미리보기 05:53
생각해볼 문제
섹션 4. 비즈니스 로직을 재사용할 수 있는 DI 와 IoC 를 구현합니다.
첫번째 비즈니스 로직을 구현합니다. - Emp001 19:44
두번째 비즈니스 로직을 구현합니다. - Login 07:14
비즈니스 로직을 재사용할 수 있는 DI 와 IoC 를 구현합니다. 16:50
개발자가 비즈니스 로직을 편하게 재사용 할 수 있도록 합니다. - MasterController 16:26
비즈니스 로직을 재사용 합니다. - Login 06:29
작동하는 코드로 DI 와 IoC를 확인합니다. 04:57
생각해볼 문제
섹션 5. 인증과 접근제어 기능을 구현합니다.
기밀성, 무결성, 가용성 그리고 기술적 보안 14:32
인증 역할을 하는 객체를 구현합니다. - SessionB 10:44
인증기능을 구현합니다. - Login 15:06
접근제어 기능을 구현합니다. - MasterController 08:44
인증과 접근제어 기능을 실행합니다. - Emp001_test 18:23
생각해볼 문제
섹션 6. 개발자가 알아두면 좋은 지식 암호화
패스워드를 보호합니다. - CryptPin 06:50
암호화 기능을 구현합니다. 미리보기 18:17
AES 암호화 알고리즘, CBC 운영모드, PKCS7 패딩 06:54
javax.crypto 패키지에 없는 암호화 알고리즘을 추가합니다. - Aria 15:44
암호화 알고리즘에 사용될 비밀키를 보호합니다. 10:34
암호화 기능을 동작해봅니다. 10:16
생각해볼 문제
섹션 7. SW 비가시성을 해결하기 위해 로그기능을 구현합니다.
SW 비가시성을 해결하기 위해 로그기능을 구현합니다. 33:41
로그경로를 알 수 있는 init.properties 파일은 classpath 에 있어야 합니다. - InitProperties 09:23
AOP 관점의 로그 기능을 구현합니다. - Trace 06:17
단일쓰레드 환경에서 로그 기능을 확인합니다. - TraceRunner 18:20
멀티쓰레드 환경에서 로그 기능을 확인합니다. - TraceRunner 26:14
필요한 로그만 잘 기록하는지 확인합니다. - Trace.config 09:31
생각해볼 문제
섹션 8. 비기능 요구사항은 개발자가 사용하는 소프트웨어 기능입니다.
비기능 요구사항은 개발자가 사용하는 소프트웨어 기능입니다. 14:37
강의 게시일 : 2021년 04월 01일 (마지막 업데이트일 : 2021년 07월 03일)
수강평 총 3개
수강생분들이 직접 작성하신 수강평입니다.
3.7
3개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
이의종 thumbnail
4
완강했으므로 후기를 남깁니다. 실제 완강은 1주일 전 쯤에 했지만 점심시간에 한적에서 적어보는 것이니 참고가 될 지는 모르겠습니다. 【수강이유】 개인적으로는 미리보기로 공개된 [작동하는 소프트웨어를 쉽게 만들 수 있도록 준비합니다.]를 보고 수강을 결정했습니다. 【강의에 대한 느낌】 백엔드 프레임 워크를 만든다는 느낌보다는 개발 중에 직면하는 문제들에 대해, 제로님의 통찰력을 배견하는 강의라는 느낌이 들었습니다.각 섹션의 주제는 흥미로웠지만 주제에 비해 강의시간이 짧은 만큼 심도를 추구하다기보단 방향성의 제시에 가까웠습니다. 【기타】 소스코드가 점점 쌓이는데 biz이하 패키지랑 fw이하 패키지가 동일 프로젝트에 테스트코드와 로직코드가 함께 계속 추가되다보니 점점 프로젝트 파일이 복잡하게 느껴졌습니다. 이건 단순히 개인적인 느낌일 수 있습니다. fw의 각 기능을 모듈별로 나누고 모듈을 참조해서 biz를 작성하는 식으로 강의를 전개했으면 어땠을까 싶네요
2021-04-27
지식공유자 제로
안녕하세요. 제로입니다. 인프런의 강의 관리 기능중 수강생 관리 화면이 있습니다. 거기서 수강생 각각의 강의 진도를 확인할 수 있는 기능을 제공하는데 의종님은 다른분들하고 다르게 꾸준히 진도를 나가주시는 모습을 보여주셨고 강의를 만든 입장에서 힘이 되었습니다. 완강해주셔서 정말 감사합니다. 방향성 제시 관련해서 이야기를 드리면 제가 강의를 기획했을때 계속 고민했던 것 중 하나는 많이 이야기 하면 주제를 벗어나고 깊게 구현하면 코드가 어려워진다는 점이었습니다. 그걸 극복하기 위해 실제 업무에서 발생한 문제점을 이해하고 이를 프레임워크의 기능으로 만들어가는 초급개발자 관점으로 강의 구성을 했습니다. 물론 강의에서 만들어진 기능은 부족한게 맞고 의종님이 이야기 하신 것처럼 방향성을 제시하는 것으로 끝나는것도 의도한 부분입니다. 이런 점은 배워서 사용하는 프레임워크가 아닌 불편해서 개선하는 프레임워크로 시야를 넓히길 바라는 마음으로 만들었습니다. 프레임워크의 최종본은 아래 위치에 있습니다. https://github.com/zeroshift01/zeroshift01/tree/master/inflearn08 방향성 제시로 그친 프레임워크가 실무에서 사용될 수준으로 변화된 모습을 보실 수 있을거에요. 두번째 패키지 관리 기준에 대해 이야기를 드리면 당연한 이야기겠지만 실제 실무에서는 프레임워크 자원과 업무 자원을 분리 시켜 사용하고 있습니다. 하지만 설명하는 관점에선 자원을 분리하지 않는게 한눈데 볼 수 있는 장점이 있어 biz 와 fw 자원을 분리하지 않았습니다. 이클립스 기준으로 자원을 볼때 계층 구조로 보시면 자원 구분이 쉬울 것 같습니다. 세번째 테스트코드관련한 내용에 답변을 하자면 패키지는 하나의 기능을 응집도 관점으로 모듈화 할 수 있는 디렉토리 정보기 때문에 그 기능을 결함을 확인하는 테스트코드도 같은 위치에 두는게 효과적이라는 생각으로 자원을 관리했습니다. 물론 파일 끝은 Emp001_test.java 처럼 테스트 코드임을 알 수 있도록 했고 그런 규칙으로 실무에서도 테스트 코드가 운영환경에 이관되는 일이 없도록 관리됩니다. 추가적으로 같은 패키지에 위치하면 디폴트 메소드 테스트하기도 좋습니다. ^^ 수강평 감사합니다.
2021-04-27
히히 thumbnail
5
완강 후기! 프레임워크를 만들어보고 싶으신 분. 또는 기존 다른 프레임워크를 사용하고 계신 분들께 추천드립니다!!! 프레임워크를 사용해왔지만, 내부적으로 어떻게 사용되고 있는지 제대로 공부해본 적이 없었는데 강의를 통해서 많이 배우고 갑니다:) 그냥 이론적으로 공부했던 개념들이 프로그램에서 어떻게 이용되는지도 중간중간 잘 설명해 주셔서 많이 도움됐습니다.ㅎㅎㅎ 기회가 생긴다면 저도 프레임워크를 제대로 만들어보고 싶네요!
2021-04-21
지식공유자 제로
네이버 "고수" 라는 웹툰을 보면 새로운 초식(招式, 권법의 지도)을 많이 아는 것보다 내가 익힌 초식을 깊게 알고 그걸 응용하는게 이득이라는 문구가 있습니다. 그런 의미로 강의를 만들었는데 도움이 되었다니 기분이 좋네요. 끝까지 완강해주시고 첫 수강평 남겨 주셔서 감사합니다.
2021-04-21
김광훈 thumbnail
2
강의 내용은 좋지만 생각해볼 문제 같은 경우 정답 혹은 관련 내용 없이 올라가 있는 건 좀 당황스럽네요 .... 강의를 사서 듣는 건 시간과 시행착오를 최대한 줄이려는 이유가 큰데 관련 내용을 또 찾아봐야 하는게 많이 아쉽습니다. 마지막으로 현업에서는 인텔리제이를 많이 사용하는데 강의에서는 이클립스로 진행하는 것도 좀 아쉬운 부분이였습니다.
2021-05-02
지식공유자 제로
안녕하세요. 제로입니다. 수학실력을 키우기 위해선 해설집을 보지 말아야 합니다. 해설은 문제의 풀이 과정중 하나일 뿐이고 그 과정을 고민하기 전에 눈으로 먼저 익히면 유사한 문제나 응용 문제를 풀지 못하기 때문입니다. 생각해볼 문제도 똑같다고 생각합니다. 작동하는 소프트웨어를 코드로 만드는 과정은 수학문제 해설지에 있는 내용처럼 되지 않습니다. 추상화와 가독성간의 트레이드오프(서로 반대의 영향을 미치는) 를 고민해야 하고 비정형 실시간 데이터 처리를 위해 트랜잭션 직렬화를 어느정도 포기해야 하는 상황이 옵니다. 이때 도움이 되는 것은 눈으로 본 지식이 아니고 내가 고민한 경험입니다. 그런 경험과 지혜를 얻어가길 바라는 마음으로 생각해볼 문제의 답은 따로 올리지 않았습니다. 그래도 궁금하신 분들을 위해 온라인 피드백 시간을 마련했으니 관심있으시면 메일주세요. 인텔리제이 사용 관련으로는 WAS(톰캣)를 실행하고 디버그할 수 있는 기능(엔터프라이드에디션)이 유로 버전부터 가능한 관계로 강의 기획할때 사용하지 않기로 했습니다. 또한 IDE 특정 기능이 필요하지 않고 별도의 플러그인이나 라이브러리 없이 클래스패스, 컴파일, 빌드 설정만 하면 되기 때문에 무료이고 WAS(톰캣) 제어가 가능한 이클립스를 사용합니다. 하지만 건의해주신 것처럼 인텔리제이 기준 백엔드 프레임워크 프로젝트 환결설정 방법을 따로 만들어 올려 수강에 도움이 되도록 하겠습니다. 수강평 감사합니다.
2021-05-20