Container
Container란 보통 문자 그대로 무언가를 담고 있다는 의미입니다. 소프트웨어에서 컨테이너란 보통 어떠한 모듈과 같은 것들을 담고 있는 것을 통틀어 Container라고 표현 합니다. 대표적인 예시로 배포를 할 때 웹 소스 및 DB를 하나의 Container에 담아 배포를 합니다. 이러한 개념은 보통 DevOps를 개발하시는 분들 사이에서 사용하는 Container의 의미 입니다.
하지만 FrontEnd에서도 Container라는 용어를 사용하곤 하지요. 또한 BackEnd에서도 Container라는 용어가 사용되는 부분도 있지요. 물론 조금씩 서로 다른 의미 이겠지만요.
FrontEnd, BackEnd에서 말하는 Container의 개념을 하나씩 천천히 알아 보도록 하겠습니다.
FrontEnd에서의 Container
FrontEnd에서의 Container의 의미는 매우 단순합니다. 보통 FrontEnd 에서는 HTML을 사용하여 화면을 구성하곤 하지요. 짫은 예시와 함께 보겠습니다.
<div className="simple-page-container">
<div>
<div>머리</div>
</div>
<div>
<div>가슴</div>
</div>
<div>
<div>배</div>
</div>
</div>
위의 예시 코드는 조금 과하게 생략이 됐습니다. 요즘 같이 React, Vue를 활용하여 페이지를 구성할 때 보통 (머리, 가슴, 배) 나누어서 구성을 하곤 하는데, 이렇게 세 부분을 담고 있는 것을 보통 Container 라고도 하지요. 그리고 이러한 부분에서 저 세 부분에 들어갈 코드를 관리하곤 합니다. React, Vue 뿐만 아니라 단순 HTML로 페이지를 구성해도 비슷합니다. 세 부분을 적절하게 나누어 작성하곤 하지요.
BackEnd에서의 Container
사실 BackEnd에서의 Container는 조금 단정짓기 어렵습니다만, 보통 Spring에서는 IoC라는 개념이 있습니다. 보통 제어의 역전이라는 의미를 가지고 있는데 조금 거창한 단어 같습니다만 보통 소프트웨어에서 칭하는 용어는 문자 그대로 해석하시면 됩니다. 그게 정신 건강에 좋습니다.
IoC는 Inversion of control이라는 의미를 가지고 있습니다. 뭔가 개발자가 코드를 작성할 때 모든 개발 주도권이 개발자한테 있는 듯 하지만 그렇지 않은 경우도 있습니다. Spring과 같은 Framework를 사용한다면 Spring에서의 주도권은 Spring 자기 자신인 Spring framework에 있습니다. 더 정확히는 Spring Container라는 컴포넌트에게 있지요.
여기서의 Container는 BackEnd 서버를 구성하는 데 있어서 어떠한 것들의 생명주기나 객체간의 관계를 설정하는 그러한 제어를 담당하고 있는 것을 의미합니다.
의미가 조금 어렵게 들리실 수도 있겠습니다만 쉽게 설명하면 그냥 하나의 소프트웨어의 생명주기를 담당하는 것이다 라고 이해하시면 좋겠습니다. 참고로 위에서의 컴포넌트란 문자 그대로 어떠한 시스템을 구성하는 부품 정도로 이해하시면 되겠습니다.
결론
뭔가 제가 공부할 때 당시 용어들도 어렵고 단어도 난해해서 이해하기 매우 곤란했었습니다. 최대한 이해하기 쉽도록 설명하려고 노력을 했습니다만 잘 전달이 모르겠네요.
간단히 요약해 보겠습니다.
- Container는 대충 뭔가를 담고 있는 큰 놈이다.
이정도가 되겠네요.
감사합니다.
'IT > 개발상식' 카테고리의 다른 글
추상화 (0) | 2024.01.10 |
---|---|
Clean Code (0) | 2023.12.02 |
Architecture (0) | 2023.10.25 |
Interface (0) | 2023.10.08 |
객체지향 프로그래밍 (0) | 2023.09.24 |