본문 바로가기
Hot Trend

너와 나의 연결 고리! 이건 우리 안의 Interface!

by 디지털키즈 2021. 7. 28.
SMALL

스마트폰과 인터넷의 시대가 열리면서, 디지털로 인해 고부과 가치를 제공하는 시대가 왔다. 인터넷과 스마트폰을 이용한 수 많은 비즈니스 모델들이 생겨났고, 그에 따라 수 많은 기업들이 DT(Digital Transformation)라는 명목하에 디지털 관련 부서들을 만들며 디지털 역량을 강화하기 나섰고, 디지털을 활용한 다양한 비즈니스을 만들기 위해 필사적으로 노력중에 있을 것이다. 하지만 갑작스럽게 급조하여 만들어진 조직들은 과연 개발자들과 협업이 잘 되고 있을까? 

 

여전히 많은 부서에서 해당 문제에 대해 어려움을 겪고 있다는 것은, 필자 팀에서 뿐만이 아니라 옆 동네 팀, 옆 친구 회사에서도 말해주고 있다(최근에 팀장님이 "오늘도 개발자가 안된다고 말했다"라는 책을 갖고와서 팀원들에게 읽게했다^^). 따라서 한편으로는 컴퓨터공학을 전공하여 개발자 입장도 이해하고,  한편으로는 기획팀에서 기획자의 일을 하고 있는 필자는 생각했다: 이 고질병이라 여겨지는 굴레가 왜 다양한 곳에서 같은 문제가 발생하고 있이며, 이 굴레에서 벗어날 수 있는 방법은 도대체 무엇일까?! 

 

고심 끝내 다다른 결론은 기획자와 개발자 사이에서 발생하는 '기술 이해도의 갭 차이'에 있다. 개발자가 이해하고 있는 기술의 이해도에 비해, 일반적으로 기획자의 이해도가 현저하게 떨어지기 때문이다. 하지만 그 많고 다양한 기술들을 한편의 글로 다 설명을 할 수 없기 마련...! 따라서 오늘에 글에서는 필자가 생각하기에 실전에서 가장 중요한 하나의 핵심 개념인 인터페이스(Interface)에 대해 설명하려고 한다. 서론이 너무 길었으니 바로 시작해보도록 하자!


What is Interface?

인터페이스, 개발자들과 소통하다면 보면 종종 들었을만 한 단어이다. 우선 인터페이스의 뜻 부터 살펴보자

인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서
정보나 신호를 주고받는 경우의 접점이나 경계면이다.
(Wikipedia 발췌)

이게 뭔소린가 생각이 들면 당신은 정상이다. 간단하게 설명을 하자면 인터페이스는 "소통의 매개체"라고 보면 되겠다. 소통이라고 함은 적어도 두 개 이상의 대상이 있어야 하겠고, 그 대상이 인간이든 기계든 간에 사용되는 매개체를 모두 인터페이스라고 부른다. 음 아직도 모르겠다 좀 더 쉽게 얘기하자면, 사람끼리 대화 할때는 언어가, 사람과 텔레비전을 조작할 때는 리모콘이 "소통의 매개체", 즉 인터페이스가 되는것이다. 문제는 인간이 서로 소통할 때 언어로만 하는 것이 아니라 문자, 카톡, 전화등 다양한 매개체가 있듯이, 각종 시스템 또한 필요에 맞게 각각의 인터페이스가 구성되어 있다. 

 

자 그럼 이해를 돕기 위해 한가지 질문을 해보겠다! 스마트폰의 열풍을 일으킨 홈버튼이 내장되어 있는 휴대폰 기기의 인터페이스는 무엇인가? 홈버튼을 한번 누르면 홈화면으로 이동하고, 두번 누르면 실행중이 앱들이 보이기 하는 등, 홈버튼을 눌러 기기를 조작할 수 있다. 그렇다면 나와 휴대폰 기기가 소통하는데 홈버튼은 하나의 매개체가 되기 때문에 우리는 이 홈버튼을 "인터페이스"라 칭할 수 있겠다. 따라서 "인터페이스"라는 단어를 들으면 겁먹지 말고 "소통의 매개체"만 기억하자. 

 

자 이제 인터페이스 뜻도 알았겠다, 본격적으로 이 인터페이스라는 개념이 실전에서 개발자들과 소통하는데 무슨 상관이 있고, 왜 필자가 중요하게 생각했는지 (드디어) 알아보자. 그 이유는 회사에서 수 많은 시스템들이 있고, 많은 시스템들이 상호작용 소위 말해 연동을 하기 위해서는 반드시 인터페이스가 사용되기 때문이다! 그중에서도 가장 흔히 사용되는 인터페이스는 API(Application Programming Interface)라고 볼 수 있다. 


API? 어디서 많이 들어본거 같은데...?

API를 한국어로 직역하면 응용프로그램 프로그래밍 인터페이스다. 복잡해 보이는 단어는 뒤로하고, 쉽게 생각해보자. 우선 인터페이스라는 단어가 있으니 "소통의 매개체"와 관련이 있는건데... 어떠한 소통의 매개체 일까?

 

바로 프로그램 끼리의 소통의 매개체라고 보면 되겠다. 위에서 살펴본 예제에서의 리모콘과 버튼은 물리적인 매개체였지만, API는 프로그램의 기능 단위의 매개체이다. 이게 조금 어려워 보일 수도 있는데, 사실 별거 없다. 개발자들이 기능들을 구현하기 위해 코드를 한땀한땀 작성해야하는데, API를 사용하면 이미 어딘가에 만들어진 기능을 API라는 매개체를 통해 가져다 쓸 수 있는 것이다. (긁적.. 다 설명한거 같은데?) 수산시장에 놓고 비유를 하자면, 수산시장에 가면 먹고 싶은 킹크랩과 광어를 사서 식당에 가져가면 완성된 요리가 나오는 것과 비슷하다고 보면된다. 이 무슨 말도 안되는 소리인가라고 생각할 수 있지만, 식당이 API라고 생각하고, 킹크랩과 광어를 입력(input)값, 완성된 요리를 결과(output)값으로 본다면, API 작동법과 원리가 기묘하게 일치하는 결론이 나온다. 

 

위에 인터페이스의 형태가 엄청 많다고 언급했듯이, API 또한 상황과 목적에 따라 그 형태가 조금씩 다 다르다. 위에 예시처럼 "킹크랩과 광어"를 가져가야지 "완성된 요리"를 먹을 수 있듯이, API에서 요구하지 않은 "초코칩 쿠키"를 가져준다고 "완성된 요리"를 내오진 않는다. 이러하듯 각 API를 제작한 사람이 요구하는 방식으로 수행해야지만이 원하는 결과값을 받아낼 수 있다. 따라서 보통 API를 소지하고 있는 부서에게 해당 API 사용 가능 여부를 요청할 때, 인터페이스 정의서 또한 함께 요청해서 받아야한다. 왜냐하면 이 인터페이스 정의서가 해당 API의 사용법 설명서로서, 입력값과 결과값의 형태 뿐만이 아니라 API 사용을 위한 자세한 사항들이 나열 되어있기 때문이다. 


그 외 다양한 Interface

가장 중요한 API는 설명했으니 그 이외에 다른 인터페이스에 대해서도 알아보자!

GUI (Graphic User Interface)

GUI는 많이 들어 보았을 것 같아서 굳이 설명해야 싶지만, 인터페이스 관점에서 한번 짚고 넘어가 보자. "그래픽"이라는 단어가 이미 알려주듯이, 시각적인 그래픽을 이용한 소통의 매개체가 바로 GUI이다. 사용자가 직감적으로 사용하기 편하게 그래픽으로 디자인 조작하는 매개체가 모두 GUI라고 보면 된다. 생각해봐라 만약에 당신이 코드로만 이루어진 컴퓨터 밖에 없었더라면 사용했겠는가? GUI 환경은 컴퓨터의 접근성을 매우 낮춰주었다. 대표적으로 애플 맥(Mac)에서 마우스라는 것을 도입하여 만든 MacOS가 GUI의 세계를 보편화시켰다고 한다.  

MacOS의 처음 버전

CLI (Command Line Interface)

CLI은 "명령어"를 사용한 소통의 매개체라고 보면 되겠다. 가장 흔하게 볼 수 있는 CLI은 윈도우의 cmd(검은 창에 흰색 글씨)에서 확인할 수 있다. 그렇다고 CLI가 안 사용되고 있나? 또 그렇지도 않다. 네트워크 분야에서는 아직도 CLI 환경을 고집하고 있다. CLI의 장점이라 하면 다양하게 응용하고 조합하여 높은 수준의 결과를 낼 수가 있다. 그렇기에 Linux와 같은 운영체제는 아직도 CLI 기반으로 사용되어지고 있다. 

<윈도우 cmd>

VUI(Voice User Interface)

VUI는 등장하지 오래되지 않았지만 점점 상용화 되어 가고 있는 인터페이스라 소개하고자 한다. 바로 "음성인식"을 사용한 소통의 매개체이다. 인공지능의 발전으로 인해 음성인식의 정확도는 나날이 발전하고 있다. 특히 최근에 소개드린 사물인터넷 에서도 음성 기술이 활용되며, 그 활용도는 더욱 더 높아지고 있다. 현재 필자에게는 알람기능만 담당하고 있는 시리이지만, 얼마나 발전할지 한번 지켜보자!

 


결론

다소 지루한 감이 없잖았던 오늘 글! 인터페이스에 대해서 구구절절 설명하다 내가 봐도 너무 길어졌다... 하지만 오늘 글을 통해서 (누군가 이 글을 읽어준다면...) 개발자와 소통하는데 도움이 됬다라고 한다면 그걸로 내 몫은 다한거 같다. 오늘의 글은 너무 길었기 때문에 짧게 두 가지로 정리하자면:

 

① 인터페이스는 "소통의 매개체" 이다. 

 

② API 프로그램의 소통간에 사용되는 매개체이고, 개발자들이 API을 통해 기능을 쉽게 구현할 수 있다. 

 

이 정도로 기억하면 될 것 같다. 오늘의 끝은 내가 엄청 좋아하진 않지만 대단하다고 생각하는 최상사에 대해 말하고 마치려고 한다. 최상사는 IT와는 전혀 관계없는 학과를 나와서 디지털 팀에서 일하게 되었다. 하지만 내가 입사했을때 최상사는 이 업계의 이해 뿐만이 아니라  기술적인 이해도도 굉장히 높았다. 알고 보니 그는 따로 시간내어 PHP라는 프로그램을 독학하여 수준급으로 구현할 줄 알았고, 인터페이스는 말할 것도 없이 나보다도 더 많은 디지털 개념들을 이해하고 있던 것이었다. 개발자 출신이 아닌 사람이 성공하는 기획자가 되려면 절대 노력 없이는 안된다고 생각한다. "인터페이스"를 시작으로 더욱 더 많은 개념들을 습득해서 더 좋은 기획자/개발자가 되길 바라겠다! IT를 정복하는 그날까지! 화이팅!

LIST

댓글