오늘은 개발자 분들은 무조건 알아야 할 용어라 생각할 정도로 핵심적인 위치에 자리 잡은 오픈 소스에 대하여 의미, 활용 분야, 공유 방법, 오픈 소스의 미래 전망 등 다양한 방면으로 다뤄보도록 하겠습니다.
1. 오픈소스(Open Source)란?
오픈소스는 영문으로는 Open Source로 표기하며 소프트웨어 개발 방법 중 하나의 방법으로서 소프트웨어의 소스 코드를 인터넷이나 플랫폼에 공개하여 누구나 소스 코드를 자유롭게 사용할 수 있으며, 수정, 활용하여 개발한 소프트웨어를 배포할 수 있도록 허용된 방식을 칭합니다. 오픈소스 방식의 장점이라 하면, 누구나 플랫폼에 접근하여 소스 코드를 수정 및 기능 추가를 진행 가능하다는 점입니다. 오픈 소스의 개발 방법 선택의 이유로, 다양한 개발자들이 커뮤니티, 플랫폼을 통해 개발에 참여하여 기존에 인력으로 해결이 불가능했던 한계점, 오류 등에 대해 개선이 비교적 빠르다는 것입니다. 사용자 입장에서는 오픈 소스로 공개된 소스 코드를 활용하여 적은 비용을 통해 개발을 진행 가능하다는 점이 있으며, 오픈 소스를 통해 비슷한 분야의 개발자들이 모여서 커뮤니티를 형성하기 때문에 이런 분야 활동의 기회도 얻을 수 있다는 점에서 장점이 큽니다.
하지만 이런 오픈소스에도 단점은 존재합니다. 일부 프로젝트의 경우에는 일반 기업들과 같이 후원이나 지원이 없는 상태로 개인이 진행된 상태의 오픈 소스도 있기 때문에 이런 경우에는 지원 부분에 있어서는 부족하며, 모든 개발에 참여하는 사용자가 실력이 좋은 개발자는 아니기에 경험의 차이가 존재한다는 점도 있으며, 누구나 개발에 참여하여 소스 코드의 수정이 가능하여 보안에 비교적 취약하다는 점이 있습니다. 따라서 오픈 소스를 사용한다면 이런 점들을 고려해서 사용해야 할 필요성이 있습니다. 단, 주의할 사항으로 단순히 소스 코드를 사용하면 상관이 없지만 출시 및 배포를 할 경우에는 사용한 오픈 소스의 정보에 대해서는 남겨야 하니 주의하시기 바랍니다.
2. 오픈소스의 활용 현황
오픈소스의 대표적 예시로는 운영체제로는 Linux와 활용되어 출시된 Ubuntu, CentOS, Fedora 등이 있으며, 웹으로는 구글 크롬의 오픈 소스인 Chrominum, 모바일 기반의 운영체제인 Android, 개발자들의 친숙한 개발 도구인 Java의 개발 툴인 Eclipse, 협업 툴인 Git, 편집 에디터인 Vim, 컴파일러의 대표적인 gcc 등이 존재합니다. 개발용 언어로는 Python, Ruby, HTML 등등 모두 소개하기 힘들 만큼 지금도 많은 오픈소스가 출시되고 개발 중입니다.
오픈소스의 활용 분야로는 OS(운영체제), 클라우드, DB, 인공지능, 빅데이터, 자연어 처리모델(인공지능), 수학 처리 분야, 보안, 게임 등 대부분의 개발 분야 활용 중입니다.
3. 대기업의 오픈소스 참여 및 확장
이런 오픈소스에도 기업에서 관심을 가지며 수준 높은 기술의 소스 코드를 오픈소스로 배포하여 프로젝트의 운영에 참여 중에 있습니다. 기업으로는 Google(구글), MS(마이크로소프트), IBM 등이 참여하여 자사의 기술을 오픈 소스로 공개하며 여러 개발자 커뮤니티와 협업 및 개발을 통해서 기존의 기술을 보다 고도화 시켜서 기술의 발전에 박차를 가하고 있습니다. 사내에서 긴밀히 개발되던 프로젝트에 비하여 기술의 발전 속도가 빨라짐의 이점을 파악하고 여러 기업이 이 오픈소스의 개발 방식을 선택하여 지금도 많은 기업들이 프로젝트 진행 중에 있습니다.
4. 오픈소스의 보안(취약점 보완)
개발에 있어서 보안은 가장 중요합니다. 오픈소스 개발에 있어서도 보안은 더 신경 써야 할 부분으로 드러나며 여러 개발자가 소스 코드의 수정에 개입하는 만큼 기업에서는 보안 분야의 문제점을 보완하기 위해서 보안 정책에 대한 매뉴얼을 수립하고 라이선스를 준수하여 진행하도록 하고 있습니다. 최근에는 머신 러닝 및 인공지능 기법을 적용한 취약점의 개선을 진행하는 방법을 사용하기 시작하며 이 보안의 부분에 있어서는 큰 개선이 일어날 것으로 예상됩니다.
5. 오픈소스 사이트
오픈소스는 사이트 등 다양한 방법을 통해 배포 및 개발이 진행되고 있습니다. 사이트로는 Bootstrap. GitGub, Awesome Open Source, SOURCEFORGE, OSDN, CODEPEN 등이 대표적이며, 다양한 사이트를 통해 개발에 참여 및 개인 프로젝트 진행을 통한 포트폴리오 구축이 가능합니다.
6. 오픈소스의 미래 전망
오픈소스 형태의 개발은 지속 가능성이 가장 큰 주목할 과제로 남아 있습니다. 프로젝트의 개발이 성공적으로 유지되기 위해서는 개발자 커뮤니티의 참여와 여러 개발자들의 지속적인 수정 및 개선과 같은 관심이 필요하며 이를 통한 기술의 고도화에 필요한 방법입니다. AI의 개발과 사용 분야의 확대를 통해서 과연 이런 오픈소스의 형태로 변화될지에 대해서는 아직 알 수 없지만, 개발자 즉 인간의 힘으로 가능한 개발의 분야는 한계가 있기 때문에 오픈소스의 개발 형태가 변형되더라고 기본적인 개념 자체는 없어지지 않고 더 확대될 것이라고 예측합니다.
마무리
이번 포스팅에서는 오픈소스의 의미와 활용 분야, 사용 시 장단점, 오픈소스의 보안, 오픈소스의 배포 사이트, 미래 전망에 대해 알아봤습니다. 개발자분들은 오픈소스에 대해서는 이미 지식이나 개발의 방식에 너무 익숙하시겠지만, 처음 접하시는 분들은 어렵다고 느끼실 거라 생각합니다. 이렇듯, 오픈소스는 소프트웨어 개발의 중심에 자리 잡고 있으며, 미래에도 이런 방식은 더 중요해질 것으로 기대됩니다. 포스팅의 정보를 바탕으로 개발자의 길에 한 걸음 내딛기 위한 정보가 되시길 바라며 마치겠습니다. 감사합니다.