-
[아키텍처] 프레임워크란?우아한 테크코스/테크코스 2020. 2. 20. 13:49반응형
프레임워크(framework)
쉬운 설명
재사용할 수 있는 부분을 늘려 애플리케이션 개발을 용이하게 하는 토대로 만들어진 것
애플리케이션의 기반이 되는 것으로, 프레임워크를 토대로 필요한 부분을 만들어나가면 원하는 애플리케이션을 단기간에 개발할 수 있음
아키텍처와의 관계
공통적인 아키텍처 부분을 반(半:절반정도) 완성품 소프트웨어로 구현해 차이가 있는 부분만 만들면 되게 한 것
아키텍처를 구현하는 부분을 공통화한 부분
장점
프레임워크를 사용하고 다른 부분은 따로 개발할 수 있게 하면 효율적으로 애플리케이션을 개발할 수 있음
모든 것을 처음부터 개발하지 않아도 되기 때문에 품질도 높아짐
프레임워크 도입의 장점
설계 / 개발 공수의 절감
프레임워크 이용시 가장 큰 장점으로는 우수한 설계를 재사용할 수 있다는 점
사용자는 프레임워크의 규정에 맞춰 필요한 코드를 작성하기만 하면 됨
공통적인 부분은 미리 작성되어 있으므로 똑같은 코드를 새로 만들 필요가 없음
품질 향상
실수를 줄이는 유일한 방법은 가능한 한 만들지 않는 것
프레임워크 이용시 새로 설계하거나 코드를 짜는 부분을 크게 줄일 수 있음 > 시스템 전체의 품질 향상에 기여
프레임워크 자체의 품질의 경우엔, 유명한 프레임워크는 대부분이 오픈소스로 개발/공개되고 있으며, 전 세계의 개발자들이 이용하면서 지속적인 버그 수정 및 기능 개선을 하고 있음. 역사가 길고 사용자도 많아 활발히 개발/유지보수가 진행되는 프레임워크일수록 품질에 대해 안심할 수 있음
테스트 공수의 절감
시스템은 품질을 담보하기 위해 새로 개발한 부분의 테스트를 반드시 실시함
테스트 자체가 테스트 계획의 책정과 테스트 사양서의 작성, 테스트 실시 같은 단계를 거쳐야하며, 상당히 비용이 들어가는 공정
프레임워크 이용시 새로 작성하는 코드가 줄기 때문에 테스트를 할 부분도 줄어듦. 이용을 많이하고 신뢰성이 높은 프레임워크의 경우엔 프레임워크 자체를 테스트할 필요가 거의 없기 때문에 테스트에 들어가는 공수를 줄일 수 있음
프레임워크 사용의 단점
학습 비용의 증대
반드시 해당 프레임워크의 사용법을 공부해야 함 - 어떤 프레임워크등 사용법에 숙달되기까지는 일정한 시간이 걸림
프레임워크에 맞춘 설계 방법이나 테스트 방법을 확립해야 함 - 프레임 워크가 다루는 기능의 범위는 정해져 있기 때문에, 사용자가 어떤 부분을 어떻게 설계하고 어떻게 테스트할지도 미리 생각해야 함
기술은 늘 진보하는 법이며 프레임워크도 예외가 아님, 즉 항상 새로운 프레임워크가 생겼다가 사라짐. 같은 프레임워크라도 선진적인 기술을 도입해 더욱 간단히 이용할 수 있게 개선한 새로운 프레임워크가 많음. 하지만 최신의 프레임워크는 품질이 안정적이지 않거나 정보가 적어서 배우기가 어려운 등의 문제가 있으므로 장기적인 시점에서 어떤 프레임워크를 채택할지 고민해보아야 함
설계 자유도의 저하
프레임워크를 이용한다 : 설계와 공통 도구를 재사용 한다
프레임워크 : 미리 가정해둔 이용범위가 정해져있으며, 사용자가 프레임워크 설계자의 의도 범위 내에서 프레임워크를 이용할 것으로 가정
만약 프레임워크 설계자의 의도를 넘어선 범위를 구현하려고하면, 프레임워크가 발목을 잡아서 난이도가 급상승하는 경우가 많음
프레임워크를 이용할 때는 그 프레임워크로 구현할 수 있는 범위를 파악한 후 시스템 설계에 들어가야 함. 설계나 기능에 대한 일정한 자유도를 희생하는 대가로 생산성이나 품질을 향상시키는 일임을 의식할 것
장기적인 기술력의 저하
프레임워크는 매우 높은 기술과 장기간의 경험을 바탕으로 통찰력을 집약한 결과이며, 잘 이용하면 다양한 이점을 얻을 수 있음. 하지만, 대부분의 프레임워크는 간단히 사용할 수 있도록 내부를 블랙박스화하기 때문에 그 내면의 처리의 진행을 알 수 없음
단기적인 시점에선 사용이 합리적이지만 장기적으로는 프레임워크의 뒷면에 숨겨진 다양한 기술을 습득할 기회를 빼앗아버리는 결과가 될 수도 있음
개발 현장에서 문제가 발생했을 때 프레임워크의 사용법이나 프레임워크 자체가 원인일 때도 있는데, 블랙박스 내부의 처리 진행을 알지 못한다면 해당 문제를 해결하기 어려움
반응형'우아한 테크코스 > 테크코스' 카테고리의 다른 글
[아키텍처] 아키텍처란? (0) 2020.02.21 [아키텍처 패턴] 레이어 패턴(Layer Pattern) (2) 2020.02.21 [아키텍처 패턴] MVC 모델2 (0) 2020.02.20 [Java] String 연결 (0) 2020.02.19 [Java] For문(For Loop / Enhanced For Loop / For Each) (0) 2020.02.19