티스토리 뷰

반응형

개발을 하다보면 플랫폼과 프레임워크라는 단어를 심심치않게 듣게 됩니다. 특히 프레임워크는 제가 주로 사용하는 Spring 이 아주아주 유명한 프레임워크이다보니 엄청나게 많이 언급되는 단어이기도 합니다.

 

물론, 지금 플랫폼과 프레임워크가 뭔지 설명하는 내용을 작성하려는 것은 아닙니다. 그래도 대략적으로 플랫폼과 프레임워크를 살짝 설명하면 다음과 같습니다.

플랫폼은 흔히 보는 기차 플랫폼(정거장)으로 비유하는 편인데 통상적으로 어떤 회사나 조직이 다른 회사나 조직이 개발한 결과물을 쉽게 개발하거나 운영하기 위한 환경을 제공하는 것을 의미하는 편입니다. 저는 과거에 게임앱 개발회사와 게입플랫폼 개발회사에 근무한 적이 있었고, 여기서 플랫폼은 게임의 회원가입, 로그인, 결제 등을 게임앱 개발사가 직접 개발하지 않고 플랫폼 라이브러리로 제공하여 게임 개발에 더 전념하게 해주는 것과 게임앱 개발사가 회원이나 결제에 대해서 관여하지 않도록 하여 퍼블리셔가 이를 관리할 수 있도록 하는 부가적인 목적을 가지고 있습니다.

프레임워크는 프로그래머가 개발을 할 때 일종의 틀을 제공하는 라이브러리라고 이해하는 편이 좋다고 생각합니다. 프로그래밍 언어들은 많은 자유도를 가지고 있기 때문에 하나의 비즈니스 로직을 처리하기 위해 수많은 라이브러리를 이용해 매우 다양한 방식으로 구현할 수 있기 때문에 여러 명이 동시에 하나의 프로젝트를 개발하더라도 개발자에 따라 코드의 형태가 제각각이라서 코드의 통일성을 가지기 힘들어지는데, 프레임워크들은 그 자체로도 동작이 가능한 하나의 프로그램과 같기 때문에 프레임워크를 이용해 필요한 부분을 조금씩 덧붙이는 형태로 개발하게 되면 코드의 통일성을 어느 정도 유지할 수 있다는 장점이 있습니다.

 

그렇기 때문에 프로그램에 플랫폼이나 프레임워크를 도입하게 되면 일종의 "공통코드"가 생기기 때문에 추가되는 코드는 이 공통코드를 최대한 활용하는 것이 좋습니다. 하지만, 개발자들 중에서는 자신만의 코딩 스타일이 최적의 결과물을 낸다는 생각을 가진 분들이 많고, 이것이 나쁜 것도 아니고 잘못된 것도 아니기에 무조건 고쳐야 한다는 건 아니지만, 가급적 공통규칙은 지키는게 좋다고 생각합니다. 왜냐하면 개발은 혼자서 하는 것이 아니기 때문입니다.

제가 처음 직업으로 웹프로그래머가 되어 개발할 때에는 포토샵으로 디자인 된 psd 파일 하나를 던져주면 개발자가 이미지레디라는 프로그램으로 이미지를 자르고 HTML 을 생성하면(이미지레디가 자동 생성해줌) 이걸 가지고 HTML 에 웹프로그램 코드를 삽입하여(이 때에는 ASP, PHP, JSP 을 많이 사용하던 때) 완성을 하였습니다. 사실 DB 도 제가 직접 다 설계하고 쿼리도 만들고 서버에 OS 설치 및 DBMS 설치, IDC 에 반입 등 모든 일을 혼자 하였습니다. 하지만, 요즘은 그렇지 않죠. 디자인을 HTML 로 만들고 동적 움직임을 위한 Javascript 까지 작성해주는 퍼블리셔, 퍼블리셔가 작성한 페이지를 데이터와 연동해서 동작하게 해주는 프론트엔드 개발자, DB 에서 데이터를 조회하여 프론트엔드가 원하는 형태로 이를 제공하는 백엔드 개발자, 이렇게 개발된 결과물을 서버에 배포해주는 DevOps 개발자, 서버를 관리해주는 인프라 담당자, 네트워크를 관리해주는 네트워크 관리자 등...전문직군이 점차 세분화되고 있습니다.

이러한 환경에서 여러 개발자들이 투입되는 프로젝트는 당연시 되고 있고, 개발기간이 늘어나고 한 사람이 여러 프로젝트에 관여하는 경우도 늘어나고 있습니다. 그런데 사람들이 모두 자신만의 방식을 이용해 개발한다면 같은 프로젝트의 다른 사람과의 의사소통도 힘들어지고, 새롭게 투입되는 인력 또한 이러한 내용을 파악하기 위해 더욱 고생하게 됩니다.

 

최근들어 힘들었던 부분들이, 나만의 Util 을 Class 로 먼저 구성하고 개발하거나 특정 Library 을 포함시켜서 개발하는 것들이었습니다. 예를 들면, Spring 에는 Jackson 이라고 하는 Json 라이브러리가 기본적으로 포함되어 있습니다. 그래서 Spring 프로젝트를 이용하게 되면 대부분 내부에서의 처리는 Jackson 이 처리하도록 통일되어 있습니다. 하지만 Google 에서 만든 라이브러리를 이용하다보면 Gson 이라는 Json 라이브러리가 자동으로 의존성이 추가되는 경우가 있습니다. 혹은 Gson 이 좋다고 생각해서 이 라이브러리를 수동으로 추가해서 사용하는 경우도 있습니다. 이게 나쁘다는 건 아닙니다. 그런데 또다른 개발자는 Simple Json 이라는 라이브러리가 자기 입맛에 맞다고 특정 부분에는 이 라이브러리로 개발을 했다고 하면...하나의 프로젝트에 3개의 라이브러리를 쓰는 프로그램이 만들어진다는 것입니다. 이 경우 코드의 유지보수성이 떨어짐은 물론이고, 이런 일이 누적될 경우 프로그램 실행시간이 늘어나게 되는 부작용도 발생합니다. 요즘은 장비의 성능이 좋아져서 Spring Boot 로 만들어진 가벼운 웹사이트들이 10초 이내에 부팅되는 경우가 대부분이지만, 1분 이상 부팅에 시간이 소모되는 프로그램도 적지 않게 봐서 충격적이었습니다. 인터프리트 언어가 아니기 때문에 Java 로 개발된 프로그램을 수정한 뒤 확인을 하려면 무조건 재시작을 해야 하는데(Hot Reload는 무시하겠습니다) 1분씩 걸린다고 하면, 개발 효율성이 얼마나 떨어지는지는 겪어본 사람만 알 수 있을 겁니다.

뿐만 아니라, 이런 경우 각 경우에 따라 문서를 각각 만들어서 어떠한 설명을 남겨놔야 하는 경우도 자주 있기 때문에, 각 경우에 따라 문서를 찾아봐야 알게 되고 현업에서 많이 사용하는 기능이라면 이전에도 써봤던 거라 크게 문제가 안될 수 있지만, 그렇지 않은 경우에는 개발자들이 혼동될 수 있고 이런 경우가 많아질수록 개발자는 적응을 포기하는 경우가 심심찮게 발생할 수 있습니다.

 

결론적으로 프로그램을 개발할 때 플랫폼이나 프레임워크를 적용한다면, 가급적 해당 플랫폼이나 프레임워크가 제공하는 기능을 최대한 활용하고, 이것이 성능상 약간의 손해를 가져올지라도 전체적인 유지보수성, 적응도 등에서 더 유리함을 잊지 않아야 할 것입니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함