개요
개발을 하다보면 누군가가 이미 만들어둔 프로그램 또는 코드를 사용하게 된다. 이때 어떤 것은 프레임워크라 하고, 어떤 것은 라이브러리라고 하는데 결국 둘 다 다른 사람이 만든 것이라 차이가 헷갈린다. Spring을 공부하다 이 차이를 깨닫게 되었다. 개념 상 헷갈리는 이 둘, 구분할 수 있을까?
프레임워크
이는 사용했을 때 제어권을 자신이 작성한 코드가 아닌 다른 무엇인가 가졌을 때이다. 예를 들어 Spring의 IoC 컨테이너(Inversion of Controll Container)는 사용하는 객체를 Bean으로써 싱글톤으로 관리해주며, 필요할 때 하나씩 가져올 수 있게 한다.
IoC(제어의 역전)이란 프로그램에서 프로그램의 비즈니스를 담당하는 주 객체들이 객체의 생성이나 보조적인 흐름을 관리하지 않고, IoC 컨테이너나 몇 가지의 프레임워크에 제어권을 넘기는 형태를 이야기 한다. IoC 컨테이너는 의존성을 관리하는 차원에서 DI(Dependency Injection) 컨테이너라고도 불린다.
라이브러리
이는 사용했을 때 제어권을 자신이 작성한 코드가 갖는 것이다. 예를 들어 C언어 라이브러리인 strlen(), Java의 특정 객체에 존재하는 toString() 등 이들은 내 코드에서 호출하여 사용하고, 제어권은 자신의 코드가 가지고 있다. 이런 것은 라이브러리이다.
결론
소프트웨어는 오픈소스 기반으로 발전했다. 왜냐하면 다른 사람이 미리 작성한 코드를 사용하여 빠르게 자신이 원하는 프로그램을 작성할 수 있기 때문이다. 이로써 개발자는 서비스를 만들 때 자신이 개발할 비즈니스 로직에 집중하고, 다른 도구성이 짙은 것들은 프레임워크나 라이브러리를 사용하여 개발 시간을 단축시킬 수 있다.
'개발 일지' 카테고리의 다른 글
API 명세서 작성 규칙(convention) (2) | 2024.02.12 |
---|---|
[PA] User 관련 ERD 설계 (0) | 2024.02.01 |
Discord 웹후크를 통해 Github에서 일어나는 이벤트 감지하기 (0) | 2024.01.29 |
220205 (토) 개발 일지 (0) | 2022.02.05 |
첫 개발의 방향성 주절~주절~ (0) | 2021.06.01 |