cli와 gui 간의 우위

개요

처음 42서울에서 터미널에 git 명령어를 간신히 치던 시절에는 무조건 그래픽으로 볼 수 있는 인터페이스가 좋다고 생각했다.
그러나 어느 순간부터 내 관점이 달라진 시점이 있었는데, 그것은 ssafy에 들어갔을 때였다.
처음으로 java를 배우고 db를 실행해보던 때, 오히려 gui의 불편함을 느꼈기 때문이다.
gui로 내가 익히는 동작들은 정리를 하는 게 매우 불편하고, 또 자동화를 시키기 쉽지 않았다.
본격적으로 프로젝트에 들어가서 인프라 구축 및 운영 역할을 수행하며 구축 스크립트와 도커 파일을 관리하며 이런 내 생각은 더욱 확고해졌다.

2025년 초 지금의 나는 어떤 생각을 가지고 있는가?
간단하게만 정리해보자.

각 인터페이스의 특징

먼저 각각을 살짝 고찰해보고자 한다.

gui

cli

1차 결론 - cli 승

역시 전문성을 도모하는데 있어서 cli가 좋다고 생각한다.

사실 이 부분까지는 답정너처럼 쓴 건데, 여기에 추가적인 생각을 정리하고자 한다.

cli의 불편함

터미널로 모든 것을 조작하다보면 처음 당면하는 불편함은 명령어가 익숙하지 않다는 것이다.
docker를 사용할 때, 단순하게 run을 하기 위해서는 어떻게 명령어를 작성해야 하는지, 이걸 다 일일히 쳐야 하는지 귀찮은 순간이 있었다.
또 os 단위의 조작을 가해야 하는 경우 워낙 다양한 명령어가 존재하며, 이를 다 외우고 익히는 것도 꽤나 어렵다.
네트워크 디버깅을 할 때 ip, netstat, ss, ifconfig, nslookup 등 다양한 명령어를 익히는 것은 매우 어려웠다.
아직도 iptables, openssl은 익숙해지지가 않는다.

편의성 - 자동완성

이때 자동완성은 매우 훌륭한 편의성을 제공해준다.
kubectl을 쓰다보면 정말 극락을 경험할 수 있는데, 웬만한 모든 게 tab을 통해 자동완성을 지원해준다.
나는 아직도 gui로 쿠버를 쓴다는 거 자체가 어마무시하게 불편하게 느껴질 정도이다.
다만 자동완성이 만능은 아니다.

aws cli를 사용해보면 이 불편함이 정말 극적으로 다가오게 되는데, aws는 자동완성 기능을 사용해도.. 진짜 조온나 불편하다.
aws 다음에 tab을 쳐서 출력되는 command의 개수는 정말.. ㅎㄷㄷ하다.
(aws cli auto promt 만든 사람은 진짜 그게 편한가 다시 한번 고찰해봤으면 한다.)
aws는 쓰면 쓸 수록 그냥 콘솔 조작이 차라리 낫다는 게 계속 느껴진다.
자체적으로 알아야 할 개념들이 워낙에 많고 연계도 많이 이뤄지는데 이 모든 것들을 직관적으로 파악해두기가 쉽지 않다.
이런 면에서 어떤 연계가 가능하고 기능을 쓸 수 있는지 제한해주는 콘솔은 꽤나 도움이 되더라.

다른 대안은 없는가?

cli의 단점은 사실 매우 치명적이다.
머리가 잘 안 돌아가는 시점에 명령어의 사용법을 빠르게 치는 게 어려울 때, 뇌빼고 콘솔 쓰면 얼마나 편한 줄 모른다.
그럴 때마다 생각이 드는 건, 모든 것을 키보드로 처리하면서 그래픽의 장점을 누릴 수 없는가 하는 것이다.

내가 쓰는 lunarvim은 vim의 모든 조작이 가능하면서도 마우스 조작이 가능하다.
image.png
간혹 내가 익숙치 않은 키보드 조작법이 있을 때는 마우스를 사용하는데, 베스트는 키보드를 사용하는 것임에도 차선으로 매우 좋은 방식인 것 같다.

2차 결론 - 그래픽 조작이 가능한 cli

gui의 장점과 cli의 장점을 같이 가져갈 수 있는 인터페이스가 베스트일 것이라고 최근에 생각이 바뀌었다.
gui의 장점이라 하면 아무래도 가시성이다.
cli의 장점은 자동화와 입력 도구의 단일화이다.
cli 환경을 기반으로 gui의 그래픽 효과를 얻을 수 있다면 많은 것이 편리해질 것이다.
여태 그래픽 인터페이스 역시 단축키를 많이 제공하며 키보드로 조작을 최대한 가능하게 만들고 있는데, 나는 이 정도 수준은 부족하다고 느낀다.

짬내서 쓰는 글에 대단한 고찰을 하고 싶지는 않다.
다만 조금 더 그래픽을 통한 가시성을 발달시킨 cli가 많아졌으면 하는 바람이다.

관련 문서

이름 noteType created

참고