이제 StarlingX를 이용한 구축 과정은 설명이 끝났습니다.

 

이제는 제가 StarlingX를 이용해서 진행했던 프로젝트에 대해 기록하려고 합니다.

이 프로젝트의 이름은 "IoT 환경에서 데이터 분산 처리를 위한 Edge Computing 구현"입니다.

일단 먼저 강조하자면 이 프로젝트는 미완성입니다.

 

5개월의 시간을 가지고 프로젝트를 진행했지만 처음해보는 오픈소스들이고 국내 자료가 아무것도 없고 해외 자료도 공식 자료와 커뮤니티만 있어서 모르는 단어,용어들 있으면 공부하고 설치하고 버그 찾고 해결법 찾고 하는데만 4.5개월의 시간을 소요했습니다.

 

StarlingX를 이용한 구축은 완료했지만 StarlingX의 기능을 보여줄만한 것을 구현하지는 못했고 그 위에 올라가는 서비스의 배포, CI/CD 등을 거의 하지 못했고 로컬에서 돌아가는 코드도 빈약합니다.

어렵게 StarlingX를 구축했지만 그것을 살려서 보여줄만한 서비스를 구현하지 못하니 너무나 화가 나더군요.

인프라는 구현해도 그 자체만으로는 다른 사람들에게 보여주기 어렵다는걸 깨달았습니다...

 

이럴거면 졸업 작품으로 구현이 아니라 연구로 "트렌드인 Edge Computing을 위한 오픈소스 StarlingX의 구축방법" 이런식으로 할걸 그랬나...싶지만 졸업작품인만큼 구현이 옳은 방향이고 더 높은 목표를 가진만큼 더 높은 성취를 이뤄서 많은 것을 얻었다고 생각합니다. (못이룬 아쉬운게 생기니 하고싶은 것도 많아지더군요)

 

 그리고 무엇보다 국내에서 자료가 없는 프로젝트를 3학년 중반까지는 cloud의 존재도 몰랐던 제가 혼자서 매일 하루 12시간씩 연구실의 서버실에 출근하면서 100번은 넘게 포멧하고 공식 커뮤니티에 영어로 질문도 해보고 버그도 해결해보고 등등 낑낑대면서 해내고 말았다는게 성취감이 너무 컸고 배운게 무척 많았습니다.

 

그 과정이 참 고통스러운데 하나하나 해내면 그 성취감은 고통은 비교도 안될정도고 너무나 재밌더군요.

 

이제 소감은 그만 말하고 프로젝트에 대한 설명을 하겠습니다.

 

이 프로젝트의 목적은 Edge Computing을 실제 활용하고 그에 적합한 시나리오를 보여주는 것입니다.

Edge Computing은 중앙 서버의 부하를 방지하고 전송 및 처리 지연을 해서 중앙서버 집중식의 문제를 해결하기 위해 나온 개념인만큼 중앙서버로 트래픽이 몰리는 현상일 때 사례를 보여주기 쉽죠.

 

위와 같은 이유로 Edge Computing의 사례로 자율주행차가 많이 언급되고 있습니다.

패킷 발생 위치인 자동차에서 가까운 위치인 Edge에서 분산시켜 연산을 직접해서 연산시간,반환시간을 빠르게 하고 결과와 중요한 정보만 중앙서버로 보내는겁니다.

빠른 응답을 요구하는 도로위의 상황이 Edge Computing에 적합한 사례가 됩니다.

 

이야기가 좀 센거같지만 그래서 저희는 Edge Computing 시나리오로 카메라에서 보내는 정보를 Edge Node에 분산시켜서 사람 인식을 연산하다가 인식이 된순간은 중앙 서버에 정보를 보내는 방식을 선택했습니다.

 

즉 중앙 서버에서 연산하면 중앙 서버까지 보내는 시간을 아낄수 있고, 영상 n개의 시간만큼 걸릴 연산이 분산시켜서 각 분산서버에서 들어온 영상만큼만 하면 됩니다.

 

Edge Computing 구성도

구성도입니다.

 

만약 완벽한 프로젝트를 하고싶었다면 OpenStack으로 instance를 생성하는것이 아닌 다른 물리서버를 구해서 해당 서버를 Edge Node로 설정하고 진행했어야 했으나 여러 대의 서버를 구하기도 쉽지 않고 능력이 부족해서 위와같이 진행했습니다.

StarlingX를 bare metal에 설치하고 설치한 StarlingX로 OpenStack instance를 만들어서 분산시킵니다.

3대의 카메라는 각 정해진 근처의 분산 instance로 영상을 보냅니다.

그러면 보내진 영상은 각 instance에서 OpenCV를 이용해 영상을 처리하고 결과만 중앙서버의 역할을 할 instance로 보냅니다.

결과에 대한 출력은 nginx를 통해 띄웁니다.

 

위와같이 Edge Computing을 진행하면 원래 중앙 서버의 연산시간이 영상 n개가 들어오는 시간에 비해 1/n만큼 걸리는 것을 확인할 수 있습니다.

+ Recent posts