강의

멘토링

로드맵

/

백엔드 프레임워크 만들기

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

(3.7) 수강평 3개

수강생 69명

  • 제로

이런 걸 배울 수 있어요

  • 세상의 모든 프레임워크를 이해할 수 있는 지식과 경험

  • 백엔드 기술 로드맵을 이해할 수 있는 능력

  • 만들어진 기술을 잘 사용하는데 그치지 않고 좀 더 발전시키는 능력

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

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

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

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

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

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

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

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

 

 

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

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

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

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


이 강의는

 

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를 사용해본 경험

안녕하세요
입니다.

238

수강생

7

수강평

26

답변

4.6

강의 평점

1

강의

  • 20년 경력의 자바 개발자
  • 백엔드 프레임워크를 만들고 사용중인 지식과 경험이 있는 개발자
  • 세상의 비즈니스 요구사항을 잘 이해하고 작동하는 코드로 단순하게 표현할 수 있는 개발자
  • 세상의 모든 기술을 사용하는 사람 입장에서 쉽게 설명할 수 있는 정보처리기술사

커리큘럼

전체

54개 ∙ (9시간 18분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

3개

3.7

3개의 수강평

  • krocha07290532님의 프로필 이미지
    krocha07290532

    수강평 12

    평균 평점 4.9

    4

    100% 수강 후 작성

    I'm leaving a review because I completed it. I actually completed it about a week ago, but I'm writing it down during lunch, so I'm not sure if it'll be helpful. 【Reason for taking the course】 Personally, I decided to take the course after seeing the preview of [Preparing to easily create working software.]. 【Impressions about the course】 Rather than feeling like I was creating a backend framework, I felt like it was a course about gaining insight into issues faced during development. The topics of each section were interesting, but since the lecture time was short compared to the topics, it was more like suggesting directions rather than pursuing depth. 【Other】 The source code kept piling up, but since the packages below biz and below fw were the same project, and test codes and logic codes were continuously added together, the project file felt increasingly complicated. This may just be my personal feeling. I wonder how it would have been if the course had been developed by dividing each function of fw into modules and writing biz by referencing the modules.

    • zero
      지식공유자

      Hello. This is Zero. Among the lecture management functions of Inflearn, there is a student management screen. There, you can check the progress of each student's lecture. Unlike others, Mr. Eui-Jong showed a steady progress, and it was helpful as a lecturer. Thank you so much for your hard work. Regarding the direction, One of the things I kept worrying about when I planned the lecture was that if I talked too much, I would get off topic, and if I implemented it in depth, the code would become difficult. To overcome that, I organized the lecture from the perspective of a beginner developer who understands the problems that occur in actual work and turns them into functions of the framework. Of course, the functions created in the lecture are lacking, and as Mr. Eui-Jong said, it was also intended to end with just suggesting the direction. This is not a framework that you learn and use, but a framework that you improve because it is inconvenient, and I hope that it will broaden your horizons. The final version of the framework is located below. https://github.com/zeroshift01/zeroshift01/tree/master/inflearn08 You will see that the framework that was just a direction has changed to a level that can be used in practice. Let me talk about the second package management standard. It goes without saying, but in practice, the framework resources and the business resources are used separately. However, from the perspective of explanation, there is an advantage in not separating the resources, so we did not separate the biz and fw resources. When looking at the resources based on Eclipse, it seems that it will be easy to distinguish the resources if you look at it in a hierarchical structure. To answer the third question about the test code, since a package is a directory information that can modularize a function from a cohesion perspective, we managed the resources with the idea that it would be effective to place the test code that checks the defects of that function in the same location. Of course, the end of the file is made so that it can be known that it is a test code, like Emp001_test.java, and with such a rule, in practice, the test code is managed so that it is not transferred to the operating environment. In addition, if it is located in the same package, it is also good for testing the default method. ^^ Thank you for your review.

  • dmsgml1588627님의 프로필 이미지
    dmsgml1588627

    수강평 1

    평균 평점 5.0

    5

    100% 수강 후 작성

    Complete review! I recommend this to those who want to create a framework. Or those who are using other existing frameworks!!! I've been using frameworks, but I've never properly studied how they're used internally. I'm learning a lot through this lecture :) It was very helpful that the concepts I just studied theoretically were explained well in the middle of how they're used in programs. ㅎㅎㅎ If I get the chance, I want to properly create a framework too!

    • zero
      지식공유자

      If you look at the webtoon "Gosu" on Naver, there is a phrase that says It is more beneficial to deeply know the techniques you have learned and apply them than to know many new techniques (instructions on martial arts). I made the lecture with that in mind, and I am glad that it was helpful. Thank you for sticking with it until the end and leaving your first review.

  • kk0318769333641님의 프로필 이미지
    kk0318769333641

    수강평 1

    평균 평점 2.0

    2

    41% 수강 후 작성

    The lecture content is good, but it's a bit disconcerting that there are no answers or related content in the case of questions to think about... The reason I buy and listen to lectures is to minimize time and trial and error, but it's a shame that I have to look up related content again. Lastly, I use IntelliJ a lot in the field, but it was a bit disappointing that the lecture proceeded with Eclipse.

    • zero
      지식공유자

      Hello. This is Zero. In order to improve your math skills, you should not look at the solution book. The solution is only one of the problem-solving processes, and if you learn it with your eyes before thinking about the process, you will not be able to solve similar problems or application problems. I think the same goes for the problems to think about. The process of creating a working software as code is not like what is in the solution book for math problems. You have to think about the trade-off between abstraction and readability (which have opposite effects), and there are situations where you have to give up transaction serialization to some extent for processing non-standard real-time data. What will help you at this time is not the knowledge you have seen with your eyes, but the experience you have thought about. I did not upload the answers to the problems to think about separately, hoping that you will gain such experience and wisdom. But for those who are still curious, I have set up an online feedback session, so if you are interested, please send me an email. As for using IntelliJ, Since the ability to run and debug WAS (Tomcat) (Enterprise Edition) is available from the Euro version, I decided not to use it when planning the lecture. Also, since I don't need IDE-specific features and I only need to set the classpath, compile, and build without any separate plugins or libraries, I use Eclipse, which is free and allows WAS (Tomcat) control. However, as you suggested, I will create a separate method for setting the backend framework project environment based on IntelliJ and upload it to help you take the course. Thank you for your review.

비공개 강의로
수강이 제한됩니다.
비공개 강의

제로님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!