[ASAC 06] 프레임워크와 라이브러리 차이, 웹 애플리케이션 프레임워크

2024. 8. 28. 16:46·ASAC
728x90
이 글은 ASAC 06기를 수강하며 강의 자료 참고 및 추가 자료 수집을 통해 작성된 글입니다. 

라이브러리와 프레임워크의 차이

해결하는 문제 비교

  • 라이브러리 : 단일 문제, 단일 목적을 위해서 개발되었다. 그래서 라이브러리는 목적이 뚜렷하다.
  • 프레임워크 : 다수 문제, 다수 목적을 위해 개발된 라이브러리의 집합이다.
    • 다수의 라이브러리 제공
      ex) Message Converter, Security, DB 제어를 위한 기능 등
    • 다수의 인터페이스 제공
    • 선택권이 쥐어지지만, 흐름에 대한 제어권은 개발자에게 없다. 프레임워크에 어느 정도 제어권이 마련된 상태.

 

좀 더 정확하고 기술적인 차이 : 개발의 흐름에 대한 제어권이 어디에 있는가??

 

제어권 관점에서의 비교

  • 라이브러리
    • 합친다 : 라이브러리는 상세 구현체를 제공하고, 개발자는 필요한 기능 사용을 위해 라이브러리를 가져와 코드와 합친다.
    • 결합을 위해 라이브러리에 대한 이해, 자신이 작성한 코드에 대한 이해 필요.
    • 즉, 개발자는 라이브러리 사용에 대한 책입과 모든 제어권을 갖는다
    => 흐름 제어권 = 개발자 몫

  • 프레임워크
    • 꽂는다 : 인터페이스에 원하는 라이브러리를 쓰거나 로직 구현
    • 프레임워크는 껍데기만 주어질 뿐 구현체는 개발자가 직접 개발하거나 다른 라이브러리들을 가져와 꽂는다.
    • 무한한 자유도(다수의 라이브러리, 다수의 인터페이스 제공)를 가지지만,
      짜여진 틀 안에서 상세 구현을 해야하는 제약이 있다.
    • IoC(Inversion of Control, 제어권의 역전) : 개발, 흐름 제어권이 개발자에서 프레임워크로 이동
    => 흐름 제어권 = 프레임워크 몫

프레임워크에서 라이브러리 관리

프레임워크는 개발 편의성을 위한 다수의 라이브러리를 제공한다. 라이브러리를 추가, 삭제, 업데이트하기 위해서 보통 Package Manager 를 사용한다.

ex) Javascript-npm, Python-pip, Ruby-bundler, Java-Maven, Gradle

 

Package Manager를 사용할 때 보통 세 가지를 명시한다.

웹 애플리케이션 프레임워크

왜 사용할까?

백엔드 프레임워크는 개발을 위한 다양한 편의를 제공한다. 백엔드 프레임워크를 사용하지 않는다면 개발자는 다음과 같은 문제들로 매우 고통받을 것이다.

  1. 어떤 요청이 들어왔는지 일일이 확인해서 요청을 매핑해야 한다.
    => RequestMapping을 직접 개발해야 한다.
  2. Request : json  형태로 오는 요청 데이터를 객체 로 변환하기 위해서 역직렬화 가 필요하다.
  3. Response : 객체 인 응답 데이터를 json으로 변환하여 반환하기 위해 직렬화 가 필요하다.
    => Request와 Response를 위해 MessageConverter (잭슨. json 변환)를 직접 개발해야 한다.

등장

Java, C, C#, Ruby, Python 등은 본래 애플리케이션 개발을 위한 언어

  • WAS 등장
  • 웹 애플리케이션 프레임워크 등장 : 웹 서버 개발의 모든걸 제공
    => 언어마다 웹 개발을 지원하는 프레임워크를 제공함. 애플리케이션 뿐만 아니라 웹 개발에서도 사용하게 되었다.

Python-Django, Java-Spring, C#-ASP.NET 등

제공 기능

웹 애플리케이션 프레임워크의 제공 기능

  1. Request Mapping : 요청 매핑
  2. Thread 관리
    => 애플리케이션(요청 처리), db 접급 스레드 생성, 할당, 관리
  3. DB 동시성 제어
    => 트랜잭션 스케줄 직렬화. (4번의 직렬화(데이터 변환)과 다름.)
  4. Serialization / Deserialization
    => 데이터 변환 json <> object
  5. Security
    => CORS 등 보안 관련 정의 및 처리
  6. Authentication / Authorization
    => 매 요청마다 해당 요청이 권한에 맞게 요청한건지 보안 처리
728x90

'ASAC' 카테고리의 다른 글

[ASAC 06] 데이터 직렬화와 역직렬화  (0) 2024.08.28
[ASAC 06] 백엔드 개발의 목적  (1) 2024.08.28
[ASAC 06] SSL 인증서  (0) 2024.08.27
[ASAC 06] CSS 개발 확장 도구  (0) 2024.08.27
[ASAC 06] Javascript 프레임워크 동작원리(2) - Bundling & Code Splitting  (0) 2024.08.27
'ASAC' 카테고리의 다른 글
  • [ASAC 06] 데이터 직렬화와 역직렬화
  • [ASAC 06] 백엔드 개발의 목적
  • [ASAC 06] SSL 인증서
  • [ASAC 06] CSS 개발 확장 도구
suhsein
suhsein
티끌모아 태산
  • suhsein
    기억 못 할 거면 기록이라는 좋은 수단이 있다
    suhsein
  • 전체
    오늘
    어제
    • 분류 전체보기
      • ASAC
      • Next.js
      • Docker
      • MySQL
      • Java
      • Spring-Proxy, AOP
      • Spring Boot, JPA
      • Spring Security
      • DB
      • 알고리즘
      • PS
      • TOPCIT
      • AWS 자격증
      • 비공개
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 안녕하세요
  • 인기 글

  • 태그

    포인터
    오블완
    해시
    tsp
    티스토리챌린지
    동적프로그래밍
    Alias
    DP
    외판원순회
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
suhsein
[ASAC 06] 프레임워크와 라이브러리 차이, 웹 애플리케이션 프레임워크
상단으로

티스토리툴바