서론

핸즈온 머신러닝 [1] 에서 파이프라인을 설명할 때 컴포넌트라는 단어를 많이 사용한다.

머신러닝 프로젝트 문서를 보면 컴포넌트라는 용어를 자주 보게되는데 확실히 잡고 가야되겠다고 판단했다.

관련 문서를 찾다보니 원래 내가 알고 있던 단어였다.

컴포넌트 단어를 자바 웹 개발할 때 들어본 단어였는데 순간 머신러닝이라는 틀에 갇혀버린거 같다.

머신러닝이라도 모델링 개발인데 ..


컴포넌트란?

wikipedia

A component in the Unified Modeling Language represents a modular part of a system that encapsulates the state and behavior of a number of classifiers.

Unified Modeling Language에서의 Component란 여러 분류자의 상태와 동작을 캡슐화(Encapsulate)하는 시스템의 모듈식 부분 을 나타낸다.

HANAMON

컴포넌트(Component)란 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈을 뜻한다.

컴포넌트 개념의 유래

많은 하드웨어 제품들은 각각 독립된 기능을 가진 모듈로 만들어진다. 이 제품들은 회사 상관없이 서로 조합하여 하나의 제품으로 만들어진다. 이러한 제품들의 부품은 문제가 발생했을 때 해당 부품만 다른 부품으로 바꿔도 제품은 문제없이 작동한다. 컴퓨터와 스마트폰과 같은 제품들을 상상해보면 금방 이해가 갈 것이다.

반면 소프트웨어에서는 상황이 다르다. 소프트웨어는 독립적으로 개발되지 않은 경우가 많을 뿐더러 독립적으로 개발되었다해도 다른 모듈과의 호환을 생각하지 않고 개발하면 이는 결국 소프트웨어의 재사용을 어렵게 하고 유지보수 비용이 크게 증가하는 원인이 된다. 이러한 상황에서 소프트웨어의 재사용의 중요성과 필요성을 위해 나온 기술이 컴포넌트 기술이다.


처음 개발 할 때는 교수님들과 주변 선배님들이 코드를 길게 쓰면 나중에 유지보수가 힘들다는 말을 자주 해주셨는데, 직접 개발하기 전까지 이게 뭔소린가 했다. 그냥 쓰면 되지 뭔 유지보수가 필요한가?

하지만 유지보수라는 단어의 중요성은 개발 중, 개발 후 … 개발 전에도 정말 중요한 개념이다.

개발 전에는 개발의 큰 틀을 구성하고 어떻게 만들어 갈지 클래스를 만들고 구성한다.

개발 중에는 클래스에 채워진 기능에 맞춰 개발하고 수정한다.

개발 후에는 유지보수라는 단어에 맞게 서비스 중 발생한 오류를 해당 컴포넌트에서 쉽게 수정할 수 있다.

… 그 긴 코드를 마우스 스크롤 내리며 찾을 수는 없는 노릇이니..


참고문헌

1) tensorflow 블로그, 박해선, https://tensorflow.blog/핸즈온-머신러닝-1장-2장/2-2-큰-그림-보기/

2) 컴포넌트(Component)란?, HANAMON, 하나몬 작성, 2021-01-03 작성, 2022-02-07 방문, “https://hanamon.kr/컴포넌트-component란/”