개발하는 프로 국밥러
article thumbnail

들어가며

오늘의 포스팅은 얼마전, virtualBOX를 활용하여 생전 처음 리눅스에서 프로그래밍을 하며 느낀점을 적어보려 한다. 


개발을 시작한지 얼마 되지 않았던 나는, 여러가지 궁금증이 항상 많다.

그 중 하나가 서버를 돌릴 때 왜 보기도 힘든 CUI(Character User Interface)기반의 리눅스를 사용하냐는 것이었다...

 

Linux

 

때문에 오늘 서버구축을 위해 리눅스를 사용하는 이유를 이야기 해보고자 한다.


리눅스를 사용하는 이유는 다음과 같다고 한다. 

무료 오픈소스

리눅스는 무료 오픈소스 운영체제로, 완전 무료 정책이기 때문에 그 어떠한 금액도 필요로 하지않는다. 웹서버로 리눅스를 사용하는 가장 큰 이유라고 생각한다.

우수한 보안성

PC에 가장 위협적인 건 바이러스 또는 해킹이 아닐까 싶다. 시간이 지날수록 기술이 발달하고 PC 이용도 대중화 되었는데 동시에 PC를 공격하는 방식도 발달하고 다양화되었다. 특히, 24시간 365일 내내 쉬지않고 돌아가는 웹서버 기반의 오픈소스 운영체제는 더 위험하다고 생각할 수 있지만, 오히려 더 안전하다.

그 이유는 리눅스가 오픈소스라는 데 이유가 있다. 오픈소스기에 더욱더 많은 공격을 하기도 하지만, 대부분의 서버를 리눅스로 돌리는 만큼, 회사와 개인의 정보를 지키기 위해서 그 수많은 공격을 방어하며 보안성을 키워왔다.

 

다른 유료 운영체제를 사용해서 웹서버를 운영한다고 해서 결국 보안 문제는 존재한다. 결과적으로 보안 문제가 꾸준히 등장할 것이고, 서버 관리자는 그 공격을 방어해야만 한다. 그래야만 한다면 기왕 사용할거 무료 오픈소스를 사용하는게 좋지 않을까라는 짧은 생각을 해본다. 

구조 안정성

리눅스는 매우 안정적으로 충돌이 잘 발생하지 않는다. 그 이유 또한 위에서 언급한 내용과 일치하는데, 전 세계 수많은 기업 및 개발자들이 사용하는 무료 오픈소스 운영체제인 만큼, 굉장히 많은 버그가 발생했을 것이고, 그러한 버그 또한 사용자들에 의해서 수정되었기 때문이다. 지금 이순간에도 버그는 발생하고 수정되고 있을 것이라 생각한다.

 

반대로 윈도우(Window) 및 기타 유료 운영체제들은 오픈소스가 아니기 때문에 OS 소스를 직접 마주할 인원이 한정적이고, 설령 버그나 위협이 발견된다 하더라도 이를 수정하고 픽스할 인원 또한 한정적이기 때문에 업데이트가 느리다는 단점이 있다. 업데이트가 느릴수록 해당 위협에 노출되는 시간이 길어진다는 의미다.

 

또한 리눅스(Linux)는 윈도우(Window)와 달리 업데이트 또는 패치 이후에 OS를 재부팅 할 필요가 없다고 한다. 기업에서 사용하는 웹서버는 주로 하루 24시간 365일 내내 가용중이어야 하는 경우가 많은데, OS가 재부팅된다면 웹서버를 다시 가동하고 서버 안정화를 시키는데 꽤 많은 시간을 들여야만 한다. 많이 겪어봤겠지만 윈도우(Window)는 지 멋대로 업데이트를 진행하고 멋대로 OS를 재부팅하는 경우가 다반사이기 때문에 웹서버에 딱히 적합하지 않다(물론 설정을 통해 막을 수 있다).

 

빠른 속도

위와 같은 이유로 리눅스는 서버에 적합한 OS로 발전을 거듭해왔고, 그러다보니 서버 위에 그려지는 프로그램 또는 플랫폼 등을 이용하는 사용자에게는 보여지지 않는 부분이 되면서, 개발자 사용자 모두에게 친숙한 GUI(Grapical User Interface)가 아닌 CLI(Command-Line Interface) 방식으로 정착하게 되었다. 아무래도 서버에게 중요한 건 속도이다보니, GUI를 써봤자 무겁고 속도저하를 일으킬 요인일 뿐이라는 것이다.

 

마치며


프로그래밍을 하면서 느끼는 점은 무엇을 사용 할 때에는 이유가 명확하게 존재한다는 것이다.

 


서버를 운영함에 있어 리눅스를 사용하는 것도 마찬가지,, 서비스를 출시함에 있어 다양한 서버(웹, 데이터베이스 등등..)가 존재할 것이고, 각각의 서버를 운용할 때 무겁고 안정성, 비용, 속도, 보안성이 우수한 리눅스를 안쓸 이유를 찾기가 더 힘든 것 같다. 

'CS > 네트워크' 카테고리의 다른 글

JWT(Json Web Token)  (0) 2022.06.27
세션과 토큰  (0) 2022.06.27
리다이렉션?  (0) 2022.06.01
컴퓨터는 인터넷에서 어떻게 통신할까?  (0) 2022.05.30
포트 포워딩  (0) 2022.04.16
profile

개발하는 프로 국밥러

@gugbab2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!