플러그인과 미들웨어 그리고 컴포넌트

gyomni·2022년 6월 10일
2

Week I Learned

목록 보기
15/20
post-thumbnail

기능 변경에 따른 코드변경

소프트웨어는 지속적으로 변경되고 있다.
그리고, 자주 변경되는 소프트웨어를 살펴보면 아래와 같은 경우가 있을 것이다.

  • 기존의 코드가 바뀐다
  • 기존의 것이 사라진다
  • 삭제된다

이 중에서도, 가장 빈번히 일어나는 것은 새로운 기능 추가일 것이다. 그리고 기능 추가를 하므로써 기존 코드 변경도 생기고, 코드를 제거하는 경우도 있을 수 있다.

여기서! 추가, 변경을 다룰때
어떻게 잘 다룰수 있을까? 어떤 방법이 좋을까?를 생각해볼 수 있다.

코드를 안전하게 변경시킬 수 있는 좋은 방법은?
소프트웨어에서 바뀌는 코드와 안 바뀌는 코드를 분리해서 나눠놓아볼 수 있다!

  • 바뀌는 부분은 계속 바뀔 수 있게
  • 안 바뀌는 부분들은 안 바뀔수 있게
  • 중요 코드들은 안 바뀌는 쪽으로 이동!

한다면, 소프트웨어의 안정성은 상대적으로 높아질 것이다.

이렇게 바뀌는 구조안 바뀌는 구조를 분리해서 개발하는 구조가 여러가지가 있고, 그 중 대표적인 2가지로 플러그인과 미들웨어를 들 수 있다.

플러그인(plugin)

플러그인에서 대표적인 플러그인-아키텍쳐를 본다면,
==> 크롬!

크롬 브라우저가 플러그인 구조를 제공하는 소프트웨어이다.

다들 한번쯤은 들어가봤을 크롬 웹 스토어에 들어가보면, 확장 프로그램이 있다.
크롬에서는 익스텐션이라고 부르는데, 명칭만 그럴뿐, 플러그인이라고 생각하면 된다.

크롬 브라우저가 가지고 있는 원래의 기능은 전혀 건드리지 않고 더 많은 일을 할 수 있게 해주는 프로그램들이다. (=확장 프로그램)

위에서 설명한 코드 구조 분리를 크롬 익스텐션에 대입해서 보면,
크롬 익스텐션이라는 소프트웨어가 제공하는 기능은 크롬을 통해서 제공되기 때문에 사용자들은 그냥 크롬 기능이라고 느낄 것이다. 하지만! 크롬이 변경된 것은 아니다.

크롬이라는 호스트 어플리케이션에서 확장프로그램이 작동할 수 있는 구조를 제공해줘야 한다. 구조만 제공해주면 크롬 브라우저는 새로운 기능들이 계속 추가 된다.

즉, 크롬자체는 변경되지 않고, 변경되는 추가 기능들을 계속 추가하므로써 사용자는 많은 기능들을 제공받을 수 있게 된다.

위에서 설명한 변경되는 부분과 변경되지 않는 부분을 나눠서 다루는 것! 이게 바로 플러그인이라는 아키텍쳐!

미들웨어(middleware)

플러그 인과 유사한 구조이며, 많이 사용되는 소프트웨어가 있다.
===> Express라고 하는 노드의 Web application framework

Express라고 하는 framework도 자신이 제공하는 몇몇 기능들이 있기는 하지만, 추가적인 많은 기능들을 모두 다 제공할 수는 없다. 그래서 미들웨어라는 소프트웨어를 추가할 수 있는 구조를 제공해주고, 실제적인 기능은 미들웨어라고 하는(어떤 소프트웨어가 될지는 Express자체는 모르지만!)소프트웨어를 함께 구성할 수있는 구조를 제공해서 전체적으로 Express가 제공하는 많은 기능들이 확대될 수 있는 형식으로 만들어져있다.

Writing middleware for use in Express apps
(Express앱 문서-미들웨어를 작성하는 방법)

해당 문서를 보면 결국, 기존 코드는 바뀌지 않고 안전하게 작동하면서 새로운 기능을 제공할 수 있는 컨셉임을 알 수 있다.

호스트 코드에 변경은 전혀 없이 새로운 기능을 추가할 수있는 환경을 만들어 줌!(핵심적인 부분 변경 없이 새로운 기능 확대하는 대표적 컨셉!)

이런 컨셉들을 명확하게 숙지하고 있다면 애플리케이션을 만들 때 규모가 커지면 플러그인 아키텍쳐를 만들어서 확장성에 유연하게 만들어볼 수 도 있을 것이다. (소프트웨어 아키텍쳐에도 관심 가지기!!)

미들웨어와 플러그인같은 아키텍쳐와 비슷하게, UI를 만들면서도 굉장히 익숙한 아키텍쳐가 하나 더 있는데, 바로바로 ~~~React이다~!

컴포넌트

대표적인 컴포넌트 아키텍쳐로는 React가 있다.

컴포넌트 아키텍쳐는 괸장히 오래된 아키텍쳐면서 현재도 잘 쓰고 있다 !! (현재도 리액트로 프로젝트중,,,,🙄)

컴포넌트는 플러그인과 미들웨어보다 훨씬 더 큰 범주의 방법론이지만, 컴포넌트라고 하는 것도 변경되지 않는 단단한 소프트웨어 구조물을 두고 새로운 것을 계속 추가할 수 있는 방법 중에 하나로, 유용한 컨셉이다!


수많은 컨셉, 방법론들이 소프트웨어에 변경과 어떤식으로든 연관되어 있다는 것을 알 수 있다!! 😐

profile
Front-end developer 👩‍💻✍

0개의 댓글