본문 바로가기

Inventory/Development

기업에서 Python 프로그램을 만들 때 참고할 사항

안녕하세요.

 

어떤 기업이 있습니다.

기업에서 뭔가를 만들고 싶은 것이 있겠죠?

만들고 싶은 것이 있어요. 그것이 어떠한 IT 서비스가 될 수가 있겠죠.

언어를 무엇을 쓸까요. 개발자는 누구를 뽑을까요.

외주를 줄까요 아니면 자체 개발로 할까요.

돈은 얼마나 들고 공수는 얼마나 들까요 문제는 없을까요.

 

이런 부분에서부터 근본적으로 사람들은 고민하게 됩니다. 또 고민하게 되겠죠.

 

요즘 AI다 딥러닝이다 머신러닝이다. 사실 요즘도 아니죠. 한 3년 전쯤부터 유행했던 이야기죠.

저 또한 딥러닝쪽 공부를 막 시작한건 사실이지만 여하튼 뭐 그렇다는 겁니다.

그래서 그거 하려면 뭐 써야 하는데?

 

R이나 Python 써라 이런말 많이 들었을거에요.

 

사실 맞는 말이에요. 그러니까 위와 같은 대답이 나왔겠죠.

그럼 Python 언어가 신기술이냐. 신세계냐. 요즘 유행하는 Digital Transformation을 할 수 있는 그런 언어냐.

글쎄요. 그건 잘 모르겠네요. 

다만 이런 대답은 할 수 있을 것 같습니다.

 

1. Python 언어 자체는 절대로 신기술이 아닙니다.

나온 지 30년이 다 되어가는 언어가 무슨 신기술입니까. 솔직히 말도 안되죠.

다만 오픈소스 기반 언어답게 30년이 지났는데도 현재도 많이 사용하고 계속 발전하고 있다. 그건 맞겠네요.

 

2. Python 언어로는 뭐든지 다 만들 수 있다?

뭐 틀린 말은 아니에요. 뭐든 맘만 먹고 만들면 못 만들겠습니까.

사실 Python은 자연어 처리, ML, DL, AI 등에 최적화된 라이브러리를 제공하고 있기 때문에 해당 부분을 사용할 때 좋고, 그 다음은 유연성이 뛰어난 Web Framework(Django, Flask 등)을 보유하고 있기 때문에 웹 개발에도 좋습니다.

 

하지만 Windows GUI Application, 즉 EXE 파일을 만드는 것은 글쎄요. 그건 좀 아닌 것 같습니다.

윈도우즈 만든데가 어딥니까. MS죠. 거기서 사용하는 언어는 뭘까요. C#입니다. 사실 WinAPI에 최적화된 언어는 C#이라고 보는 것이 맞겠죠 결국. Python으로도 wxPython이나 PyQt5 등을 사용해서 exe를 만들 수 있긴 한데, 제가 써보니까 정말 별로입니다. 그냥 안하는게 낫습니다.

 

그러므로 그냥 AI나 웹개발이나 하는게 낫습니다.

 

아래 사이트 가시면 Python으로 뭐할수 있는지 아주 잘 나와있습니다.

 

https://www.python.org/about/apps/

 

Applications for Python

The official home of the Python Programming Language

www.python.org

  • Web and Internet Development: 제가 위에서 말한 웹개발 프레임워크입니다.
  • Scientific and Numeric: 제가 위에서 말한 자연어처리, 즉 AI와 관련된 분야입니다.
  • Education: 이것도 맞죠. 언어 자체가 쉬워서 교육용 언어로 많이 쓰입니다.
  • Desktop GUIs: 위에서 말한 Windows GUI Application에 해당되는 부분입니다. 가능하지만 별로입니다.
  • Software Developments: 
  • Business Applications:
    • Odoo is an all-in-one management software that offers a range of business applications that form a complete suite of enterprise management applications.
    • Tryton is a three-tier high-level general purpose application platform.

갑자기 S/W 개발, Biz App부분은 원문 그대로 썼죠?

이것은 제가 한 줄로 판단하기 보다는, 직접 원문 보면서 설명하는게 나을 것 같아서 써본겁니다.

 

S/W 개발, Biz App 부분은 사실 차이가 크게 없습니다. 위에 써져있는 것들은 개발 배포를 위한 통합 애플리케이션을 나타낸 것이고, 거기에 Python도 쓸 수 있다는 것이고요. 그런데 비즈니스 통합 애플리케이션이나 배포용 소프트웨어를 개발할 때 Python만 쓰겠습니까. C언어나 Java 등등 다 쓰겠죠. 실제로 Scon이나 Odoo 등등 이런데 자세히 들어가도 Python 뿐만 아니라 다른 언어도 전부 다 호환 가능합니다.

 

이 말은 즉, Python은 개발을 위한 하나의 선택지일 뿐이지 절대자의 영역은 아니다. 단 특정 영역에 있어서는 최적화되어있어서 좋다라는 것 정도로 요약 가능할 것 같습니다.

 

 

3. 그럼 Python 언어 자체가 다른 언어보다 직접적으로 나은 점이 뭐가 있나요?

이건 쉽게 대답이 가능합니다.

일단 OSS(Open Source SW)입니다. 이게 큽니다. 

요즘 들어서 프로그래밍 언어들도 무료로 사용할 수 있고, 관련 도구들도 무료 제공하기도 하고 그랬지만, 옛날에는 Eclipse 기반 Java 개발 정도를 제외하고는 전부 다 상용이였던 것 기억하죠. 

그래서 다른 언어 기반으로는 개발해봤자 확장성에 대한 한계가 여전히 있었고, 발전도 더디고 그랬던 사이 Python 혼자서 OSS를 바탕으로 Github 등의 커뮤니티를 통해서 각종 라이브러리를 제공하고 빠르게 확장해 나갔던 것이죠.

그래서 직접적으로 나은게 뭐냐고 한다면, 원하는 라이브러리 웬만한걸 다 제공한다. 그 정도입니다.

 

그런데 위에서 Windows GUI App은 왜 별로냐라고 생각할 수 있겠죠?

그것 또한 간단히 보자면, 이 부분을 발전시켜나가야 할 필요성이 없다고 판단했기 때문일 것입니다.

요즘도 Windows 많이 쓰죠? 그런데 휴대폰 더 많이 쓰죠? 

그리고 거의 웬만한데는 웹에서 다 지원되죠? 심지어 Cloud 환경으로 Local보다 원격 환경에서 더욱 최적화된 Application이 나오는 것이 현실입니다.

Windows App을 개발하느니 차라리 다른걸 개발하겠다는 것이 OSS 개발자들의 주요 사상이고, 또한 그들은 대부분 Linux 등을 많이 사용하기 때문에 더더욱 필요성을 못느꼈겠죠. 

 

그러면 모바일 앱 개발부분은 왜 Python을 사용하지 않을까요. 

그건 그냥 Android, iOS의 특수성 때문이랄까요. 아마 그것이 좀 더 적합하겠네요.

다만 Google에서는 개발하는 S/W의 80%를 Python 언어를 사용하기 때문에, Google에서 지원하는 운영체제인 안드로이드 역시 Python에 최적화될 날이 오겠죠? 사실 전 모바일쪽 개발은 거의 문외한이기 때문에 잘 모르고 써본겁니다. 피드백은 언제든 환영할게요.

 

 

4. 결국 IT 개발이 필요한 업체는 Python을 써야 할까요?

네. 그래야 할 것 같네요. 

사실 Python 언어 자체는 위에 쓴대로 신기술이나 그런것 자체는 절대로 아닙니다. 하지만 관련 라이브러리를 가장 잘 제공하고 있는 언어이기도 하고, 무료로 쓸 수도 있어서 비용적 측면에서의 부담도 덜 할 것이고, 아마 Python 언어를 잘 하는 개발자나 부서를 신설하거나 기존 부서에서 다루는 방법으로 맞춰나갈 필요는 있겠죠.

다만 그런것 자체가 귀찮다. 난 IT 서비스 그런것 모른다.

그런 업체 있으면 그냥 외주 쓰세요. 그게 차라리 낫습니다.

외주가 알아서 하겠죠 뭐.

 

하지만 외주업체조차 Python 언어 기반으로 Application을 개발하겠죠.

 

그러므로 그냥 쓰면 됩니다. 간단합니다.

망설이지 맙시다.