화상솔루션 – 화상영어수업 및 화상영어창업에 필요한 화상 프로그램 – 화상솔루션 개발 강좌 제 2 판 4 편 by 송재호

By thruthesky / No. : 119 Count of Viewers : 1973

화상영어수업 및 화상영어창업에 필요한 화상솔루션 프로그래밍 강좌
화상영어사업 필수 항목인 화상솔루션 프로그래밍 개발 강좌 by 위세너 송재호
화상영어사업을 한다면 반드시 갖춰야 하는 화상솔루션 과연 어떻게 만들까요?
본 강좌는 화상영어수업을 위한 2013년의 화상솔루션 첫 번째 개발 강좌 시리즈에서 이어 2016년 두 번째 개발 강좌 시리즈입니다.

화상영어수업에 필요한 화상솔루션 제작 강좌 – 제 2 판 4 편 – P2P 연결 – 화상영어창업전문 위세너

“화상솔루션” 이라고 호칭 하였는데, 사실 사람들이 이해하기 쉬운 용어로 설명을 하기가 쉽지 않습니다.

“화상 회의 시스템” 이 보다 올바른 용어이겠지만, 이해하기 쉬운 단어를 써야 겠지요.

화상솔루션 - 화상영어수업 장면 - 화상영어창업전문 위세너

2013년도에 화상영어창업 후 화상영어수업 서비스를 하고자 하는 화상영어사업자와 화상영어창업자를 위해서 직접 화상솔루션을 만들어 무료로 제공하자는 취지에서 WebRTC 를 통해서 화상 통화 솔루션을 만들고 강좌를 썼었습니다.

저는 2007년 화상영어창업을 위해서 직접 홈페이지를 만들고 화상영어수업에 필요한 자동화 LMS 및 화상솔루션을 만들었습니다. 그 때 부터 화상영어창업 또는 화상영어수업에 필요한 홈페이지 및 LMS 를 무료로 만들고 배포하였습니다.

만 10년 째 이러한 화상영어창업 및 화상영어수업에 관한 홈페이지 및 LMS, 화상솔루션 프로그램 작업을 하고 있습니다.

지금 제가 만들고 있는 새로운 2016년 버젼의 화상솔루션 프로그램의 소스 코드는 공개 하지 않을 생각입니다. 그 이유는 제가 화상영어수업 서비스를 지난 10 년 동안 진행하며 많은 버젼의 LMS 와 화상영어수업 관련 소프트웨어를 공개하면서 경험을 해 온 것인데, 화상영어수업 LMS 및 화상솔루션 소스 공개를 하면 너무나 많은 문의가 오기 때문입니다.

문의를 해 오면 시간 당 상담료를 받는 다고 했지만 지켜지지 않았고 단 한번도 화상솔루션 상담과 관련해서 상담료를 받아 본적이 없습니다. 즉, 화상솔루션 소스 공개로 인해서 추가적인 시간을 쓰게 되는데, 그에 비해서 얻는 것이 없기 때문입니다.

오픈 소스 형식으로 기여를 하는 것도 좋지만, 무책임한 소스 공개는 혼란을 야기 할 뿐이고 책임있는 소스 공개는 뒤따르는 헌신을 감당하기에는 시간적으로 부족해서 입니다.

다만, 지금 개발하는 화상솔루션이 완성되면 쉽게 사용 할 수 있도록 무료 서비스를 할 예정입니다. 물론 화상솔루션을 본인의 서버에 직접 설치하여 운영하고 싶다면 유료 지원을 할 것입니다.

2013년 당시 화상영어수업을 위해서 화상솔루션 개발을 완료 하였지만 안타까운 점은 그 당시에는 한국에서 크롬을 쓰는 사람들이 적었기 때문에 원활한 WebRTC 를 이용한 화상솔루션을 사용 할 수 있는 환경이 되지 않아서 프로젝트가 완성도 있게 끝나도 활용을 하지 못했습니다.

2016년 5월 현재는 WebRTC 를 통한 화상솔루션 활용 상황이 조금 바뀌었습니다.

WebRTC 에 특별한 변화가 있는 것은 아닙니다. ORTC 를 기다리고 기다렸지만 아직 감감 무소식입니다. 이 상태로라면 ORTC 아마 빛을 보지 못하고 사라 질 것입니다. 구글이나 애플에서 ORTC 에 대해서 전혀 관심을 두지 않고 있기 때문입니다. 그렇다고 MS 에서 목숨걸고 ORTC 를 지원하는 것도 아니구요.

WebRTC 자체나 기타 소프트웨어적인 변화는 없지만, 인프라에 큰 변화가 있었습니다.

2016년 초반 부터 한국의 인터넷 사용자 중 50% 이상이 크롬을 사용하기 시작한 것입니다. 그리고 MS 또한 WebRTC 나 ORTC 는 아니지만 스카이프 모듈을 이용한 Plugin Free 화상 통신 기능을 제공합니다.

이 쯤되면 2013년과는 다르게 충분히 웹(WebRTC)을 통한 화상영어수업 서비스를 시도 해 볼 만 합니다.

화상영어수업을 할 때, WebRTC 를 통해서 크롬과 크롬 및 모바일을 연결하고 인터넷 익스프로러는 자체 Plugin Free 기능을 통해서 서로 연결을 하는 것입니다.

크롬과 익스플로러가 서로 호환은 안되지만 사용자에 맞추어서 서비스를 하는 사람이 크롬을 썼다가 익스플로러를 썼다가 하면 되므로 충분히 가능성이 있습니다.

지금 현재 WebRTC 기능을 구현 중에 있는데 직접 모든 것을 제작하려니 엄청난 시간이 걸릴 뿐 더러 현존하는 WebRTC 라이브러리 보다 잘 만들기가 어렵습니다.

그래서 관련 라이브러리 중 EasyRTC, RTCMultiConnection, SimpleRTC 를 사용해 보았는데, 2013년 도에는 EasyRTC 로 했었지만 2016년에는 RTCMultiConnection 으로 제작을 하고 있습니다.

2013년에 제작 할 때 EasyRTC 라이브러리 자체는 큰 무리가 없었는데, 3년이 흐른 후에도 EasyRTC 에 큰 변화가 없었던 것 약간 실망스러웠습니다. 오히려 전에 없던 에러가 눈에 띄였구요. 또 라이브러리 자체가 좀 무거운 느낌이 있었으며 상업적인 느낌이 강해서 왠지 멀어지고 싶다는 생각이 들었습니다.

그래서 2016 년에는 화상솔루션 제작을 위해서 RTCMultiConnection 을 많이 시도하고 있습니다. SimpleRTC 는 너무 심플해서 사용하기가 어렵구요.

RTCMultiConnection 에서도 여러가지 에러가 눈에 띕니다. 그리고 RTCMultiConnection 개발자가 부지런하기는 한데 혼자하다 보니 일손이 많이 부족한지 사용자 지원에 미흡하여 고민이지만 그래도 RTCMultiConnection 이 가장 활발하게 관리되고 있어 믿음직 합니다.

본 강좌에서 실질적인 코딩 기법을 가르쳐드리지는 않습니다. 소스 코딩을 직접 강좌에 싣는 다면 본 강좌를 끝 맺기가 매우 어렵기 때문입니다.

다만 개념적인 부분에 대해서 기술을 하고자 합니다.

본 강좌에서는 P2P 연결에 대해서 설명을 하고자 합니다. 이해를 한다면 심플한 내용인데 설명을 하기는 어렵네요.

WebRTC 의 가장 강력한 기능이 바로 P2P 가 아닐까 합니다.

참고로 각 라이브러리 마다 P2P 연결 방식이 조금씩 틀릴 수 있습니다.

RTCMultiConnection 을 예로 든다면,

A, B, C 컴퓨터가 있다면,

문서에는 RTCMultiConnection 이 A 가 B, C 로 연결하기 위해서는 sessionid 값으로 join() 하면 된다고만 쓰여져 있습니다.

A 가 join() 을 할 때, sessionid 를 바탕으로 하므로 같은 sessionid 를 사용하는 동시에 모든 사용자에게 연결을 하는 것이 아닐까 생각을 할 수 있는데, 실제로는 그렇지 않다는 느낌을 받았습니다.
제가 생각하는 과정은 아래와 같습니다.

– A 가 먼저 화상 통신을 open 합니다.

– B 가 A 에 연결합니다.

– C 가 A 에 연결하면 자동으로 C 와 B 가 연결됩니다.

이렇게 하면 A 는 B, C 와 통신 할 수 있습니다.

이 와 같이 연결되어져 있는 상태에서 A 가 컴퓨터를 재 부팅 한다면,

– B 와 C 는 서로 연결되어져 있으니 통신을 계속 합니다.

A 가 컴퓨터를 재 부팅하고 다시 연결을 하고자 한다면

– A 가 B 또는 C 중 하나에게 연결하면 연결이 안된 다른 사용자와 자동으로 연결됩니다. ( 이것은 RTCMultiConnection 내부적으로 자동 연결 처리가 되도록 해 놓은 것 같습니다. )

그러나 이 과정에서 문제가 하나 있습니다.

이것은 라이브러리 로직 디자인의 문제이므로 RTCMultiConnection 라이브러리만의 문제 일 것입니다. 어쩌면 다른 라이브러리도 이와 같은 방식으로 디자인을 했을 지 모르죠.

제 생각에는

– A 가 B 에 연결했다면,
– 자동으로 A 가 C 에 연결이 되는데,
– 그 전에 A 가 B 에 먼저 완전하게 연결이 먼저 되어야지만,
– B 가 자신이 누구와 연결이 되었는지 그 목록을 A 에게 전달하고
– A 가 그 목록을 받아서 B 에 연결된 나머지 상대방과 연결을 시도 하는 것입니다.

이 과정에서 발생하는 문제는 바로 느린 속도입니다.

– A 가 B 에 연결하는데

서로 연결 과정에서 인터넷 속도가 느리거나 A 와 B 가 서로 코덱을 맞추는 동안 심각한 에러가 발생 할 수 있습니다. 즉, 서로 연결이 안되거나 서로의 컴퓨터가 동시에 재 부팅되어버리는 경우도 발생합니다. 실제로 맥북과 윈도우즈 컴퓨터가 동시에 강제 재부팅 되는 경우가 발생했습니다.

그래서 B, C 가 서로 연결 되어져 있는 상태에서 A 가 접속을 시도 할 때,

– A 가 B 와 C 중에서 하나만 연결하여, 다른 하나와 연결이 될 때 까지 기다리는 것이 아니라
– A 가 B 와 C 모두 직접 연결을 하는 것입니다.

하지만 새로 접속하는 A 가 기존에 접속되어져 있는 모든 사용자들에게 직접 접속하는 기능은 RTCMultiConnection 에는 없습니다.

아마 이러한 기능은 다른 모든 라이브러리에도 없을 것입니다.

왜냐하면 이것은 WebRTC 의 기본 기능이 아니며 또한 라이브러리에서 이러한 기능을 직접 제공하고자 한다면 코드가 매우 복잡해지며 단순한 라이브러리가 아닌 프레임워크 수준이 되기 때문입니다.

그럼 어떻게 하면 될까요?

해결책은 바로 채팅방 기능을 따로 만드는 것입니다.

채팅방 기능을 만들어서 채팅 Siganling 을 하고자 하는 것이 아니라 ( 나중에 언급하겠지만 전자칠판을 만들기 위해서는 별도의 Signaling 이 필요합니다. ) 채팅 방에 누가 들어가 있는지를 관리하기 위한 것입니다.

즉, 채팅 방이 화상 통화 방이 되는 것이고 그 방안에 누가 들어가 있는지 목록을 관리하는 것입니다.

그래서 새로운 사용자가 방에 들어간다면, 그 화상 통화 방에 누가 있는지 목록을 주욱 보고 방에 있는 모든 사람들에게 직접 연결을 하는 것입니다.

테스트 해 보았냐구요? 아닙니다.

그냥 생각이 이렇다는 거죠. 그리고 지금 이것을 코딩하고 테스트 해 봐야 하는데… 지금 제가 있는 집에 전기세를 안내서 전기가 끊겼고 전화비도 못내서 인터넷을 할 수 있는 상황이 안되네요.

만약 이 방법이 안통한다면 RTCMultiConnection 의 Moderator 기능을 파고들어야 하지 싶습니다.

테스트는 아마 다음 주 월요일 즘에 할 수 있지 않을까 합니다. 아무래도 컴퓨팅을 쉽게 할 수 있는 곳은 화상영어수업 서비스를 하는 화상영어 교육 콜센터인 것 같습니다.

2008 년인가제가 하는 화상영어수업 서비스를 견학하고 싶다며 3명의 인원이 저를 찾아 왔습니다. 사실 저는 그 당시 온튜닷컴을 운영하고 있었는데 DDos 공격을 받고 있는 상태여서 많은 대화를 하지 못하였는데, 제가 직접 DDos 방어를 위해서 웹 서버 분산 작업을 하고 있었는데, 제 사무실에 견학을 오신 분들은 화상영어수업 서비스를 하면서 무슨 해커와 싸우냐고 의문을 제기하였습니다.

사실 저도 그 분들이 의아하는 것이 이해합니다. 필리핀에서 인터넷으로 화상영어수업 서비스를 한답시고 해커와 싸운다고 하니 많은 분들이 저를 약간 이상한 사람으로 쳐다  보았죠.

저 엮시 화상영어수업 서비스를 하는 사람이 해커와 직접 싸운다는 게 이해 할 수 없는 일이라 생각했으니까요.

저는 지금 이 글을 쓰는 순간( 2016년 5월 21 일) 필리핀 마닐라의 한 콘도에 있답니다.

콘도를 늘 (장기간) 비워 놓는 상황이라 전기가 끊긴지 몰랐네요. 그리고 핸드폰 로드가 없어서…. 인터넷이 안되네요. ( 사실 저는 무선 인터넷을 하지 않습니다. )

그래서 아마 나중에 인터넷이 되는 상황이면 이 글을 올릴 것 같습니다.

프로그래밍을 혼자서 한다는 것은 참 재미 없는 일입니다. 화상영어수업 서비스를 하면서 틈나는데로 프로그래밍을 하고 있죠.

같이 프로그래밍 놀이 하실 분? 같이 공부 하실 분? 또는 같이 웹 개발 사업 하실 분? 연락 바랍니다.

올바른 프로그래밍 작업을 해야합니다.

필리핀에 있다보니 ㅋ/ㅈ/ㄴ 쪽 프로그램이나 다단계 프로그램을 하는 사람들이 많은데 실력있는 사람들은 절대 이런 일 하지 않습니다.

위세너 화상영어창업 전문 – 화상영어수업에 필요한 화상솔루션 제작 강좌

송재호

화상영어창업에 대한 상담은 아래와 같습니다.

카톡 thruthesky2

메일 thruthesky@gmail.com

전화 070 – 7893 – 1741