cli와 gui 간의 우위
개요
처음 42서울에서 터미널에 git 명령어를 간신히 치던 시절에는 무조건 그래픽으로 볼 수 있는 인터페이스가 좋다고 생각했다.
그러나 어느 순간부터 내 관점이 달라진 시점이 있었는데, 그것은 ssafy에 들어갔을 때였다.
처음으로 java를 배우고 db를 실행해보던 때, 오히려 gui의 불편함을 느꼈기 때문이다.
gui로 내가 익히는 동작들은 정리를 하는 게 매우 불편하고, 또 자동화를 시키기 쉽지 않았다.
본격적으로 프로젝트에 들어가서 인프라 구축 및 운영 역할을 수행하며 구축 스크립트와 도커 파일을 관리하며 이런 내 생각은 더욱 확고해졌다.
2025년 초 지금의 나는 어떤 생각을 가지고 있는가?
간단하게만 정리해보자.
각 인터페이스의 특징
먼저 각각을 살짝 고찰해보고자 한다.
gui
- 처음에 익히는 것이 쉽다.
- 아무래도 줄글보다는 그림이 보기 쉬운 것과 같은 이치로, 사람의 인지 능력을 활용하는 데 있어서는 무조건 그래픽 효과가 있는 것이 훨씬 좋다.
- 대체로 gui는 개발자의 디자인이 들어가 있기에, 사용자 친화적인 화면 구성을 통해 내가 당장 어떤 기능을 쓸 수 있고 기능 간의 연관성을 직관적으로 파악하기 쉬운 경우가 많다.
- 마우스를 사용할 수 있다.
- 장점이자 단점으로, 키보드가 아닌 다른 입력 도구를 이용하여 조작할 수 있다.
- nvim처럼 사실 cli여도 tui라 해서 마우스 조작을 지원하는 도구도 있긴 하다.
- 처음 사용할 때야 쉬운 것 같아서 좋지만, 전문적 조작을 하다보면 키보드에서 손이 떨어지는 것조차 비효율이라 느껴지는 모멘트가 있는데, 이점에서 나는 이것이 엄청난 단점이라 느꼈다.
- 마우스를 사용하는 게 개발 편의성이냐? 나는 절대 아니라고 본다.
- 괜히 ide 툴을 쓰면서 빠르게 단축키를 쓰는 게 아니다.
- 장점이자 단점으로, 키보드가 아닌 다른 입력 도구를 이용하여 조작할 수 있다.
cli
- 복붙이 쉽다.
- 텍스트의 큰 장점은 복사가 쉽다는 것..
- 해당 명령어가 뭔지는 잘 모르더라도, 지피티나 타인의 글을 보고 그대로 쓱 갖다 붙이기는 정말 좋다.
- 자동화 편의성
- 복붙이 편하니 당연히 스크립트화를 시킬 수 있는데 이렇게 되면 내가 행했던 모든 조작을 명확하게 정리해둘 수 있다는 것도 엄청난 장점이다.
- 이를 통해 하고자 한다면 웬만한 모든 조작을 스크립트화해 자동화를 꾀할 수 있다.
- 모든 조작을 키보드로 할 수 있다.
- 이게 어마무시한 장점이라 생각한다.
- 키보드에서 손을 뗐다가 다시 붙이는 그 손동작의 과정은 알게 모르게 많은 비효율을 야기한다.
- 한 줄 복사를 위해 ctrl로 왼손을 옮기는 동작조차 비효율이라 생각하며 vim을 사용하기 시작한 내 관점에서는 그렇다.
- 가장 좋은 입력 방식은, 내 손이 움직이지 않고 손가락의 동작만으로 모든 조작을 행하는 것이라는 생각은 아마 앞으로도 변화가 없을 것 같다.
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의 모든 조작이 가능하면서도 마우스 조작이 가능하다.
간혹 내가 익숙치 않은 키보드 조작법이 있을 때는 마우스를 사용하는데, 베스트는 키보드를 사용하는 것임에도 차선으로 매우 좋은 방식인 것 같다.
2차 결론 - 그래픽 조작이 가능한 cli
gui의 장점과 cli의 장점을 같이 가져갈 수 있는 인터페이스가 베스트일 것이라고 최근에 생각이 바뀌었다.
gui의 장점이라 하면 아무래도 가시성이다.
cli의 장점은 자동화와 입력 도구의 단일화이다.
cli 환경을 기반으로 gui의 그래픽 효과를 얻을 수 있다면 많은 것이 편리해질 것이다.
여태 그래픽 인터페이스 역시 단축키를 많이 제공하며 키보드로 조작을 최대한 가능하게 만들고 있는데, 나는 이 정도 수준은 부족하다고 느낀다.
짬내서 쓰는 글에 대단한 고찰을 하고 싶지는 않다.
다만 조금 더 그래픽을 통한 가시성을 발달시킨 cli가 많아졌으면 하는 바람이다.
관련 문서
이름 | noteType | created |
---|