[sw 아카데미] 2. 객체지향 기초, 백엔드, N-tier

suRan·2022년 8월 11일
0

충남대 sw아카데미 특강을 정리한 포스팅입니다.

백엔드 커리큘럼

  • 보편적으로 알고 있는 수준
    • 객체지향
      • 객체지향의 아버지 알란케이
      • 객체지향 개념 자체는 절차지향 언어와 비슷하게 등장했다.
    • C와 JAVA의 가장 큰 차이점 (~2000년대 까지)
      • 왜 IoC와 DI가 등장했나?

백엔드 과정을 통해 이해해야 하는 개념

  • 객체지향(Object-oriented) 기술

    • 클래스/인터페이스 -> 타입(Type)
      • 메소드, 필드
    • 상속
    • Subclassing/Superclassing
    • DDD(Domain-driven-Design) / TDD (Test-Driven-Development)
    • MVC(Model-View-Controller)
      • MVVM(Model-View-ViewModel) -> SpringMVC기반
  • 시스템/서비스 구분

    • Front-end / Back-end
    • Presentation Layer / Business Logic Layer / Business Object Layer Model
    • 1-tier / 2-tier / 3-tier / N-tier…
    • Middleware / WAS /Container / Framework
  • 네트워크 프로그래밍

    • 소켓 프로그래밍 기반 vs RPC / RMI
      • Sun RPC vs DCE RPC

우리나라에서 프레임워크의 의미?

  • 전자정부 프레임워크
    • 행안부(행정안전부)의 NIA(정보화진흥원-> 한국지능정보사회진흥원)
    • 주로 자바기반의 스프링 프레임워크 기반
    • 일정 규모 이상의 프로젝트에서 사용 의무화(법제화)

Front-end / Back-end

  • 백엔드는 왜 "백엔드"인가?
    • 시스템/서비스 구분
    • 눈에 보이는 프론트엔드와 보이지 않는 백엔드 2단계로 구분
    • 현재는 Presentation Layer / Business Logic Layer / Business Object Layer 의 3단계로 구분

N-tier 시스템

서버 - 클라이언트가 몇 단계로 쪼개지느냐?

  • 1-tier

    • Web Browser(Client) - Apache WebServer(sever)
  • 2-tier

    • Web Browser - Web Server / DB client - DB Server
      • JSP를 생각하면 이해가 쉽다.
      • 실제 검색하는 내용은 db에 들어있지만 요청은 웹 서버에 한다.
      • 웹서버가 요청 처리
  • 3-tier

    • Web Browser - Web Server / DB client - WAS Server / DB client - DB Server
    • 트랜잭션/로드밸런싱, 장애대응, 로그취합, …
    • 등을 WAS에서 제공
  • N-tier …

Spring

Presentation Layer / Business Logic Layer / Business Object Layer

  • 스프링 프레임워크

    • 비즈니스 로직을 프로그래밍하는 분산 컴포넌트 기반의 프레임워크
    • DI(Dependency Injection) 기반 프레임 워크
  • 스프링 MVC

    • 표현계층 (Presentation Layer)을 담당하는 기술
      • 표현계층에는 최대한 로직을 없애는 게 기본 룰
    • SpEL(Spring Expression Language)를 사용해서 렌더링 (rendering)
      • 표현계층에서 최대한 로직관련 코드 제거
    • 프론트 컨트롤러 패턴 적용한 MVVM(Model/View/ViewModel) 사용
  • 스프링부트

    • 스프링 프레임워크에서 가장 어려운 설정 / DI관련 자동화 적용 -> 사용하기 쉽게 개선
      • 자동차의 미션: 단수를 조절하는 역할
        • 스프링부트 : 오토미션
        • 스프링프레임워크 : 수동
  • 스프링 JPA

    • 비즈니스 오브젝트를 담당하는 프레임워크
    • ORM(Hibernate) 계열의 기술과 SQLMapper(MyBaits) 계열의 기술로 쪼개짐
      • db에 있는 테이블을 1대1 매핑
      • 오브젝트를 만들면 테이블이 추가
      • ORM이 JPA로 됨. 기본적으로 Hibernate

객체지향(Object-oriented) 기술

  • Exploit(착취)

    1. 보안 취약점
    2. 재정거래
      • Ex) 게임의 아이템은 아이템 거래소마다 시세가 다르다. 시세 차이를 이용해서 이득을 보는 행위
    • 객체지향의 Exploit이 스프링이다?
  • 객체지향의 배경
    • 소프트웨어 위기 (Software crises)
      • 디버깅
        • 코드가 커지면서 디버깅 시간이 눈덩이처럼 커졌다.
        • 디버깅 비중이 기하급수적으로 증가 -> 해결법 : 전역변수 캡슐화
  • 객체지향
    • 캡슐화 (encapsulation) -> ✔
      • 전역변수 -> 캡슐화 (private으로 정의)
      • getter/setter를 통해서만 접근
      • 문제 발생 시 문제가 발생한 범위 압축
    • 코드 재사용 (inheritance) -> 보완 필요
      • 코드 재사용의 한계
        • MS / 구글 등 소프트웨어를 직접 개발하는 개발자 -> 직접 만든 코드 재사용 가능
        • IP (지적재산권) 코드 구할 수 없다면? -> 재사용 불가
        • 그렇다면 코드가 공개가 안되면서도 재활용 가능한 방법은?
          • 컴포넌트(conponent)!!!!!
            • 스프링 -> MSA (Micro Service Architecture)

그렇다면 캡슐화 vs 상속 둘 중 무엇이 더 중요했을까?
=> 캡슐화가 메인, 상속은 따라온 것

객체지향컴포넌트을 구분할 수 있어야 한다!
객체지향의 등장 이래로 객체지향의 의미는 완전히 동일하지 않고 조금씩 바뀌어왔다.

profile
개발 공부를 해라

0개의 댓글