1 minute read

컴퓨터공학에서의 프레임워크?

  • 특정된 분야(웹, 앱, 윈도우 어플레케이션) 의 앱을 구축하기 위한 필요한 기반 소프트웨어

프레임워크의 특징

  • IOC (제어-역전) 프레임워크가 개발자가 작성한 클라이언트 코드를 호출한다. 예를 들어서, 사용자가 UI에 입력했을때 적절히 변수에 입력되는것은 프레임워크의 이벤트 핸들러에 의하여 통제된다. 두번째예로 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 프레임워크가 관리하는 객체에 의해 이루어지고 필요한 객체를 직접 주입해준다.(DI)

왜 제어역전을 하는가? 그래서 DI을 안하는 상황을 생각해봤다. 필요한 그렇게 되면 각 클래스에 필요한 구현체를 직접 할당해줘야 한다. 구현체를 교체한다고 한다면, 그 구현체를 사용하는 모든 클래스를 전부 유지보수 해야 한다. (OCP 위반) 어떤 객체가 인터페이스에만 의존하고 있고(의존관계역전원칙) 인터페이스의 규약을 지켜서 클래스를 만들었을때 의존성주입 기법을 사용하면 유지보수를 용이하게 할수 있다.

결국 IOC를 하는 이유는 코드에서 핵심로직을 분리해서 재사용성과 유지보수성을 높이는데 있다.

  • PSA 우리가 웹서비스를 프레임워크 없이 만든다고 생각해보자
  • 요청이 들어오면 url을 파싱해서 매칭되는 로직으로 넘겨준다.
  • 요청 바디 데이터를 객체로 변환한뒤 요청을 처리한다.
    • 트랜잭션이 필요하다면 jdbc 라이브러리에서 트랜잭션을 가져온후 작업을 한다.
  • 응답 데이터의 타입을 지정한뒤 직렬화해서 반환한다.

프레임워크를 사용하게 되면 간단한 어노테이션으로 직렬화, 역직렬화, 트랜잭션, 로깅 을 해결할수 있다. 이처럼 기술을 내부에 숨기고 개발자에게 편의성을 제공하는것을 PSA라고 한다. PSA를 통해 IOC와 마찬가지로 핵심로직이 분리되어 재사용성과 유지보수성을 높일수 있다.

Spring이 뭐지?

관점에 따라 다른 답이 가능하다

  • 핵심기술인 스프링 DI 컨테이너
  • 스프링 프레임워크
  • 스프링 생태계 자체

그러면 왜 Spring 을 사용할까?

  • 위에서 설명한 프레임워크의 장점이 있다
  • java 언어의 특징때문이다.
    • 타입이 있는 언어라서 버그찾기가 쉽고, 유지보수에 유리한 장점이 있다. 물론 타입이 없는 언어라면 빠른 개발이 가능한 장점이 있기는 하다.
    • java 언어는 객체지향언어이다. Spring 프레임워크를 사용하면 객체지향적인 개발이 가능하다.
  • 우리나라에서는 말할것이 없고, 전세계적으로 java언어의 사용량이 많다.
    • 찾아볼수 있는 래퍼런스 자료가 많은 장점이 있다.

참고자료

https://martinfowler.com/articles/injection.html#InversionOfControl

Leave a comment