나는 학회라는 곳을 2014년에 처음 갔었다.

심지어 국제학회였기에 홍콩을 간다는 설레임도 꽤 컸었다.

심지어 첫 해외여행이기에...



포스터만 나온 사진을 찾고 싶은데 없나...ㅠㅠ

일단 포스팅을 위해 포스터가 나온 사진을 적절히 오려서 업로드;;


정말 재미있는 추억거리도 많이 쌓고 하루하루가 흥미진진했던 여정(?)이었다 ㅋㅋㅋ



라이브러리와 프레임워크를 혼용하여 사용하는 경우가 많다.

이유는 아마 그 차이에 대해 명확하게 정의된 것이 없기 때문에 그런것이다.

자료를 찾아보니 굳이 명확히 구분을 짓고자 한다면 다음과 같은 특징들을 잡을 수가 있었다.


- 프레임워크는 틀, 골격의 의미로 라이브러리를 내포 할 수 있다.

- 내가 만든 소스코드에서 부르게 되면 라이브러리, 반대로 내가 만든 소스코드가 불려가 동작하게 된다면 프레임워크이다.

- 라이브러리는 연장/기능을 담은 집합, 프레임워크는 이런 연장들의 사용방식 및 API, 규칙, 절차에 대한 명세


풀어서 정리하자면, 라이브러리는 내가 그냥 가져다 사용 할 수 있는 모듈이며 수정이 용이하다.

그렇기 때문에 내가 라이브러리를 가져다 쓴다고 생각 할 수 있다.

프레임워크는 이미 정해진 명세, 규칙이기 때문에 수정이 어렵다.

소스코드를 짤때 이 규칙을 토대로 프레임워크를 사용하므로, 프레임워크가 명시한 대로 사용 할 수 있을 뿐이다.

그래서 내가 짠 소스코드는 프레임워크에 의존하여 동작하게 하게 된다.


http://imcreator.tistory.com/7

위 링크에서 이 질문에 대한 답을 명확히 이해 할 수 있었다.

모듈은 가장 상위에 위치하는 구현의 단위,

컴포넌트는 런타임 엔티티를 참조하는 단위라고 생각하면

금방 그 차이를 이해 할 수 있을거라고 생각된다.

따라서 모듈과 컴포넌트는 상위와 하위관계를 명확히 구분짓기 어렵고

서로 다른 개념으로 바라보아야 한다고 생각한다.

그렇기 때문에 모듈 1000개가 모여 하나의 컴포넌트가 될 수도있고,

컴포넌트 1000개가 모여서 하나의 모듈을 구성 지을 수도있다.


쉽게 설명해서, 모듈이란 실질적으로 구현이 된 단위를 의미한다.

자료구조, 알고리즘 등 이를 제공하는 인터페이스라고도 할 수 있을 것이다.


반면, 컴포넌트는 실제적으로 동작하고있는 엔티티로써

활동중인 독립적인 단위를 중점적으로 보고 있다.


상위에 있는 링크에서는 서버와 클라이언트의 예로 설명하고 있다.

1개의 서버에게 서비스를 제공받는 100개의 클라이언트가 존재한다고 가정하자.

위에 설명한 내용으로 모듈, 컴포넌트의 개수를 각각 세어보면

서버가 구현된 모듈 1개, 클라이언트가 구현된 모듈 1개이므로

이 시스템 인프라의 총 모듈 개수는 2개이다.

컴포넌트의 경우 실제 동작하고 있는 엔티티를 의미하므로 총 101개가 된다.

+ Recent posts