집을 지어보세요 프레임워크로
해당 브런치에 남김 글은 초고입니다. 완성된 작품은 해당 "오늘부터 IT를 시작합니다."로 출간하였습니다!!
구매하여서 완성된 글을 종이책의 정감과 편안함으로 읽어보시길 바랍니다^^
감사합니다.!!
http://www.yes24.com/Product/Goods/111417594
'가죽 지갑', '인형', '맥주', '향수', '옷', '반지', '전기자전거'까지 생활에 필요한 물건들을 직접 만들어 쓰는 방법을 DIY(Do It Yourself)라고 합니다. 이런 방식으로 전문 업자나 업체에게 맡기지 않고 직접 제품을 만들고 수리하는 개념을 말합니다. 저도 직접 반지를 만들기도 하였고, 최근에는 일반 자전거를 전기로 구동되게 바꿀 수 있는 키트를 구입하여 직접 전기 자전거를 만들어 본 경험이 있습니다. DIY의 장점은 만드는 과정을 통해 시간이 흘러도 기억할 수 있는 추억을 만들 수 있습니다. 그리고 실질적인 비용도 아낄 수 있습니다. 그렇게 DIY는 우리 생활에 새로운 활력소를 불어넣어 주고 있습니다.
가죽 지갑을 만든다고 상상해봅시다. 필요한 준비물은 다음과 같습니다. 우선 가죽이 필요로 합니다. 보통은 '소가죽'을 많이 사용합니다. 그다음은 공예 도구가 필요로 합니다. 도안을 그리기 위해서는 '자'와 '펜'이 필요로 합니다. '가죽'을 잘라내기 위해 날카로운 칼이 필요로 합니다. 그리고 잘라내기 위한 표시하기 위해 '송곳'도 필요로 합니다. 칼로 잘라낸 단면은 사포로 긁어 줍니다. 그리고 단면에 원하는 색의 '염색약'을 칠하고 '접착제'를 발라주면 이제 드디어 가죽지갑이 완성됩니다. 그 작은 지갑 하나를 만들기 위해사 사용한 도구는 약 10여 가지가 됩니다.
DIY가 가능한 이유는 무엇일까요? 바로 누군가 준비한 훌륭한 재료들 덕분입니다. 만약 이런 재료들을 팔지 않으면 어떤 일이 발생할까요? 직접 소가죽을 구하러 정글에 가고, 그 가죽을 잘라내기 위해서는 뾰족한 돌을 구해야 했을 것입니다. 원하는 색을 얻기 위해 식물들을 갈아서 염색약을 만들고 접착제는 구하기 힘드니 지푸라기를 짜서 꼬매야 만들 수 있을 것입니다. 네. 불가능한 일입니다. 만약 가능한다 해도 비용과 시간들이 손해이기 때문에 누군가 마련한 재료가 없다면 DIY는 불가능합니다.
저자 '오쓰카 야스코(大塚泰子/著 )',『작은 집을 짓는 65가지 아이디어』작은 집을 짓는 65가지 아이디어가 나옵니다. 누군가를 위한, 그리고 필요한 집들을 짓는 방법들이 자세히 소개되어 있습니다. "가족이 모이는 거실을 가장 멋진 공간으로 만들어 주세요!"라는 건축주의 조언에 따라 저자는 가족이 수시로 드나드는 현관가 가깝게 거실을 배치하고, 현관과 거실 사이에 개방감 있는 중정을 두는 쪽으로 매듭을 지었습니다. 일반적인 현관의 개념을 벗어나 좌우 여닫이 문을 시공하고, 현관문 양쪽을 열면 21.06 m2 크기의 거실에 현관과 중정이 더해진 하나의 큰 공간을 만들어 주었습니다.
DIY라는 단어는 사실 집을 공사할 수 있게 되어서 생겨났습니다. 1945년 영구에서 시작된 이런 방식은 미국까지 퍼져 갔습니다. 전문가의 도움 없이도 '당신 스스로 해라'라는 의미로 직역할 수 있습니다. 이런 것들이 모두 가능하게 된 건 기술의 발전으로 스스로 할 수 있도록 도구와 재료를 제공해주었기 때문입니다. 그리고 하나의 집이라는 '프레임워크'를 제공해주었기 때문입니다. 집의 모양은 모두 달라도 똑같은 기본 틀을 가지고 있습니다. 시멘트 콘크리트를 이용해 획일적으로 찍어낸 아파트를 보면 그 뜻을 알 수 있습니다. 집은 오랫동안 인류가 발전시켜온 삶의 거주 공간입니다. 획일화된 모양이지만 이 기본을 토대로 자신만의 새로운 공간을 만들어갈 수 있는 이유가 바로 집이라는 프레임워크 있기 때문입니다.
프레임 워크의 사전적 의미는 아래와 같습니다.
"소프트웨어 애플리케이션이나 설루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경"
"복잡한 문제를 해결하거나 서술하는 데 사용하는 기본 개념 구조"
"특정한 목적에 사용되는 사고체계"
"어떤 일에 대한 판단이나 결정 따위를 위한 틀."
랄프 존슨(Ralph Johnson) 교수는 프레임워크를 정의하였습니다. 이는 라이브러리와 달리 애플리케이션의 틀과 구조를 결정합니다. 프레임워크는 구조를 결정할 뿐 아니라, 그 위에 개발된 개발자의 코드를 제어하고, 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있도록 만들어진 코드의 모음입니다. 프레임워크는 소프트웨어가 개발될 수 있도록 뼈대가 세워져 있는 구성 요소들을 말합니다. 일명 플랫폼이라고 불리는 개념도 프레임워크의 일종이라고 볼 수 있습니다. 응용프로그램을 개발하기 가능하도록 만들어진 '기초 프로그램'이고, 프레임워크는 어떤 제품을 만들기 위한 제품입니다.
프레임워크는 개발자들이 자주 사용하는 기능들을 미리 준비해놓고 있습니다. 예를 들면 홈페이지를 프레임워크 없이 만들어야 한다면 정말 많은 사전작업들이 이루어져야 합니다. 마치 아마존 밀림에서 혼자 집을 짓는 것과 별반 다르지 않을 것입니다. 하지만 프레임워크는 홈페이지라는 집을 미리 준비해놓았습니다. 이 집은 네모나고 반듯하며, 아주 잘 만들어져 있지만 자세히 살펴보면 기본적인 것들로만 이루어져 있습니다. 현관문, 화장실, 창문, 방 기초공사를 끝낸 집처럼 보입니다. 간혹 프레임워크를 사용하는 것을 게으른 개발자라고 말하는 사람도 있습니다. 하지만 이미 구현된 부분을 이어서 새로운 작품을 만드는 과정이야 말로 프레임워크가 지향하는 방향입니다.
시중에는 다양한 프레임워크들이 출시되어 있습니다. 닷넷(. net)처럼 지원 범위가 방대한 범용적인 플랫폼도 있고, 루비(Ruby)라는 언어를 웹 어플레케이션을 만들 수 있도록 도와주는 루비 온 레일즈(Ruby on Rails)도 있습니다. 이렇게 커다란 기반의 프레임워크도 있지만, 스프링 시큐리티(Spring Security)처럼 '보안'이나 프로그램의 기록을 살펴볼 수 있는 log4j와 같은 '로깅' 프로그램 등 리모트, UI, 캐싱 상세한 분류의 프레임워크들도 존재합니다. 만약 집이라는 프레임워크를 구매했다면 현관문은 잠금장치는 어떻게 해야 할까요? 직접 열쇠를 만들거나, 도어록을 만들 수는 없습니다. 시중에 팔고 있는 잠금장치를 사서 구매하여 설치하는 것이 현명한 방법입니다. 이처럼 개발자들의 프레임워크를 사용하는 것은 게으른 변명이 아닌 가장 현명한 방법의 코딩을 할 수 있는 프로그램을 짓는 과정이라고 할 수 있습니다.
집은 짓는 건 인생을 짓는 것에 비유합니다. 지금도 개발자들이 짓고 있는 프레임워크라는 집은 다른 개발자의 중요한 재료가 되고, 그 재료로 만들어진 사이트는 누군가의 즐거움이 되고, 인생을 바꾸는 프로그램이 될 것입니다.
프레임워크를 짓는다는 건 개발자의 인생을 짓는 과정과 비슷하지 않을까요?
참조 자료
- <작은 집을 짓는 65가지 아이디어>, 오쓰카 야스코
- https://dblp.org/pid/j/RalphEJohnson.html