진부한 제목이지만.. 요샌 일하면서 제목처럼 새삼 시대가 바뀌었다고 느낍니다. 약 석달 전부터 Github Copilot을 사용해보고 있는데 처음엔 미약했던 영향이 이젠 위협처럼 느껴집니다. 주로 사용하는 프로그래밍 언어 Python을 사용할 땐 그저 내가 마음 속에 그리고 있던 내용을 적어주는 정도였습니다. “어차피 내가 적어도 비슷하게 적었을 것인데 Copilot 덕분에 타이핑 하는 수고를 덜었다” 같은 느낌이랄까요. 하지만 새로운 회사에 와서 새로운 프로그래밍 언어를 다루며 상황이 달라졌습니다.
지금의 업무에선 Typescript, Kotlin, Swift를 사용하는데 하나의 기능을 추가할 때 세 가지 언어를 모두 다뤄야 하는 경우도 있습니다. Typescript는 그나마 자바스크립트 기반이라 익숙하긴 한데 Kotlin, Swift는 말그대로 처음 다뤄보는 언어입니다. 그럼에도 불구하고 큰 어려움 없이 기능 추가와 수정을 하고 있는데 Copilot의 위력 덕분입니다. 제가 구현하려는 내용을 일부 적거나 주석으로 적어주면 지금 다루고 있는 언어에 맞게 풀어 적어줍니다. 서로 다른 프로그래밍 언어들은 각자 나름의 특성을 갖고 있지만, 거시적으로 본다면 같은 패러다임에 속하는 언어의 경우 문법만 다르지 구현 로직은 비슷합니다. 그렇기 때문에 처음 하나의 프로그래밍 언어를 익힌다면 다른 언어도 어렵지 않게 익힐 수 있는 것이지요.
앞서 얘기한 것처럼 세가지 다른 언어를 오가며 작업을 함에도 불구하고 어떤 시점엔 지금 어떤 언어를 다루고 있는지 신경쓰지 않을 때도 있습니다. 어차피 문법적인 부분은 Copilot이 잘 채워넣어주기 때문에 코드 리뷰어의 입장으로 로직이 맞는지, 문법적으로 다소 어색한 부분이 있는지 정도만 확인하면 프로그램을 작성할 수 있습니다. 일은 분명 편해졌는데 마음은 불편해졌습니다. 이렇게 일하다가는 새로운 언어를 배울 수 없겠다, 원하는 만큼 숙련된 수준까지 갈 수는 없겠다는 불안이 떠오릅니다.
새로운 언어를 익히기 위해 Copilot을 꺼두어야겠다는 생각을 합니다. 아니 어쩌면 이것도 시대착오적인 생각일까요? 마치 계산기가 등장하고 나서는 손 계산을 하는 것이 비효율적인 것처럼 말입니다. 어쩌면 프로그래밍 언어를 충분히 익히지 않고서도 일하는데 문제가 없을지도 모릅니다. 코드 작성에서 Gen AI의 도움을 받고 문제를 찾고 해결할 때도 Gen AI의 도움을 받는 시대이니 말입니다. 하지만 아직 새 시대에 적응 중인 저로선는 Copilot 친구가 살갑기도 때론 두렵기도 한 요즘입니다.
지금 일하고 있는 회사의 제품은 VR 콘서트입니다. 인간의 시각을 모사한 스테레오 카메라로 아티스트의 퍼포먼스를 촬영하고 이를 VR 장비를 통해 보여주는 식이죠. 가상현실 Virtual Reality 장비는 아직 충분히 보급되지 않아 촬영한 컨텐츠를 디지털 형태로 전달하는 게 쉽지 않습니다. 그리하여 대중에게 익숙한 방식을 사용하는데 그것이 영화관에서의 상영입니다.
회사에서 마련한 VR 장비들을 상영관에 비치해두고 모든 준비를 마친 상태로 관객을 맞이합니다. 관객은 자리에 앉아 VR 기기를 착용하고 공연을 관람하는 것이죠. 이 과정에서 스크린 영상 송출 그리고 음향 송출을 위해 영사실에서의 작업이 필요합니다. 새로운 상영관에서 VR 콘서트 상영을 한다고 하면 미리 상영관 공간을 파악해두고 영사실에서 실제 영상과 음향 송출을 테스트합니다.
요 며칠 상영 준비를 위해 메가박스 코엑스를 찾았습니다. 보통은 하루의 모든 영화 상영이 끝난 시간을 이용하기 때문에 새벽 시간에 방문합니다. 오전 1-2시 쯤 작업을 시작하고 그날의 작업을 완수하면 오전 4시정도 입니다. 사실 심야 시간에 코엑스를 방문할 일은 없어서 처음엔 풍경이 생경했습니다. 사람들로 가득차 붐볐을 공간은 이제 텅 비고 혼자 그 넣은 공간을 누빕니다. 그 시간에 코엑스엘 들어갈 수 있나? 이미 문이 모두 잠겼거나 경비원에 의해 못 들어가는 건 아닌가? 걱정도 했는데 생각보다 출입이 자유로웠습니다. 일단 영화관에서도 심야 상영을 하기 때문에 새벽에 끝나는 영화들이 있고 해당 영화를 관람한 고객들 역시 순조롭게 밖으로 빠져나갈 수 있어야 합니다. 실제로 오전 1시쯤 영화관에 갔을 때 영화 관람을 마치고 이동하는 손님들을 발견할 수 있었습니다.
저는 기술적인 부분을 담당하고 있어 보통 영사실에서 작업을 합니다. 평소였으면 절대 들어갈 일이없었을 영사실, 곧 영화관의 뒷편이라 처음 영사실에 발을 들여놓았을 땐 신기하고 감격스러웠습니다. 영사기, 영사기와 연결된 미디어/음향 장비들이 신기했고 영사실 창을 통해 내려다보이는 상영관 모습도 인상 깊었습니다. 그곳에서 시간을 보내다 빠져나오면 이제 정말 사람들이 사라진 상영관을 만납니다. 고요하게 가라앉은 분위기 속에서 상영관을 누비면 마치 못된 짓을 하는 기분이 듭니다. 새벽에 작업하는 일은 피곤할만도 한데 실제 일하고 있는 시간엔 별로 피로를 느끼지 못합니다. 아마 약간은 흥분한 상태, 각성한 상태를 유지하고 있기 때문이겠지요. 그렇게 밤 늦도록 작업을 하고 동료들과 작별 인사를 나누고 돌아가는 길엔 같이 고생했다는, 함께 일을 만들어 나간다는 유대감이 생깁니다.
곧 심야의 상영관은 끝이 나고, VR 콘서트를 관람하러 찾아오는 손님들을 만나게 되겠지요. 그때의 상영관 역시 무척이나 궁금하고 기대가 됩니다.
#computer #work
요즘 남는 시간에 컴퓨터를 만진다면 개인용 클러스터를 관리하는 작업을 한다. 오라클 클라우드의 인스턴스에 k3d로 생성한 Kubernetes Cluster인데 사실 클러스터라는 말이 무색하게 그냥 컴퓨터 하나 사용하는 Kubernetes 환경이 있는 것이다.
스타트업을 창업했을 때 일손이 부족한 가운데 급히 인프라 작업을 하면서 Kubernetes에 제품을 배포하기 위한 스크립트를 만들어 사용했다. 최대한 멱등적으로 만들어보긴 했지만 스크립트의 특성 상 절차적인 부분을 완전히 지울 수는 없었다. 게다가 환경변수를 통해 값들을 주입하는 부분이 많아 복잡했다. 내가 만들었으니 나는 이해할 수 있지만 이걸 처음 접하는 동료들은 어려울 수 밖에 없었다. 창업의 길에서 나와 새로운 회사에서 일할 때도 내게 맡겨진 건 인프라 작업이었는데 정해진 일정에 맞추기 위해선 이전 경험과 코드를 재활용 해야했다. 결과적으로 작업은 완수하였지만 작업의 내용을 동료들에게 전달하고 교육시키는 일이 쉽지 않았다.
이번에 잠시 짬이 나는 동안, 더 나은 방법을 찾아 적용해보고 있다. Helmfile + Helm Chart를 조합하면 내가 원하는 외부 Helm Chart들을 쉽게 설치할 수 있고 내가 원하는 Kubernetes 자원들도 나만의 차트를 만들어 설치할 수 있다. 사용해야 하는 도구는 Helm + Helmfile이 전부이며 이를 사용하기 위해 배울 것도 거의 없다. 차트 생성을 위한 지식만 갖추면 쉽게 원하는 자원을 추가할 수 있다.
이렇게 보통 더 나은 것들이 있다. 코드의 질, 제품의 질을 향상시키기 위해 늘 더 나은 것이 있는지 찾아보고 적용하는 것도 소프트웨어 엔지니어에겐 일상이다. 아, 그리고 사실 이 글의 목적 중 하나는 앞서 이야기한 것대로 Writefreely도 설치 방법을 변경했는데 잘 동작하는지 테스트하는 것이다. 문제가 없다면 이 글이 잘 올라갈 것이다.
아이를 재우고 난 어느 밤, 아내가 무라카미 하루키의 산문책을 읽고 있었습니다. “밸런타인데이의 무말랭이”라는 제목이었는데 특별히 새로워보이진 않았습니다. 하루키의 산문은 달리기에 관한 책을 하나 읽은 것이 전부였고, 요즘엔 특이한 제목들의 하루키 책들이 많다 정도로만 알고 있었으니까요. “채소의 기분, 바다표범의 키스“, “샐러드를 좋아하는 사자“ 같은 것들이요. 아내가 책을 건네주어 짧은 글을 읽어봤는데 글의 내용도 내용이지만 말하는 투와 분위기가 인상 깊었습니다. 사실 내용은 잘 기억나지 않아요. 아, 어떤 내용이었냐면.. 평일 오후에 도심을 거니는 것이 보통의 직장인과 달라 머쓱한 기분이 든다, 안자이 씨를 만난 이야기 였습니다. 저는 글을 적는다고 생각하면 괜히 자세를 고쳐잡게 되면서 긴장 아닌 긴장을 하게 된달까요, 불필요하게 본격적으로 되버리고 맙니다. 하지만 하루키는 짧은 산문을 담백한 듯 싱거운 듯 편하게 적어내려갑니다. 그 느슨함과 여유가 매력입니다. 저는 떄로 글을 적을 때 너무 적은 분량이 아닌가, 쓸모있는 정보가 없는 것이 아닌가, 그냥 글 읽는 사람의 시간을 낭비하는 건 아닐까 고민할 때도 많으니까요. 싱거운 글을 쓰는 연습을 해봅시다. 아니 연습이라고 하니 또 애쓰는 것 같은데 너무 애쓰지 맙시다.
요즘 제가 맡은 회사일의 핵심은 인프라 스트럭처 입니다. 회사에서 만든 제품을 안정적으로 구동할 수 있는 환경을 만드는 일이죠. 혼자 만들고 사용하는 환경과는 다르게 확장성과 안정성이 필요합니다.
기존의 환경은 Docker Compose를 이용한 배포였습니다. AWS EC2 Instance를 필요한 만큼 만들고 각 인스턴스들에서 docker compose를 실행하여 여러 서비스들을 동작시킵니다. 만약 소프트웨어 오류로 컨테이너가 정지한다면 재시작 해줄 수 있고, 가상화된 네트워크와 볼륨을 이용하여 서로 다른 서비스끼리 연결하거나 같은 볼륨을 공유할 수 있습니다. Docker Compose에 내장된 로드 밸런싱 기능이 있을지 모르겠지만 간단하게는 Nginx 등 다른 소프트웨어를 통해 로드밸런싱을 수동으로 설정할 수도 있을겁니다. 하지만 인스턴스 자체의 오류로부터는 무방비 상태입니다.
Read more...
#buddhism
안녕하세요, 새해 첫 글을 적어봅니다. 새해맞이 결심 중 하나는 꾸준히 불교 공부하기 입니다. 저는 주로 출퇴근 시간을 활용하여 책을 읽는데 보통 두 권의 책을 번갈아가며 읽습니다. 그 두 권의 책 중 하나는 불교 책으로 선택하려 합니다. 무언가 익히고 습관으로 만들기 위해선 꾸준히 시간과 관심을 들여야 합니다. 한번 익히고 관심을 다른 곳으로 돌리면 금방 잊어버리고 안 배운 것과 마찬가지인 상태로 돌아가 버리더군요. 불교도 그렇습니다. 가슴을 울리는 이야기들이 가득한 불교 관련 책을 읽다보면 마음이 너그러워지고 나도 수행하여 무명에서 벗어나고 싶다는 마음이 드는데, 책을 읽고 나서 별 생각없이 뉴스와 신문으로 세상 이야기를 듣다보면 다시 마음은 경계로 가득차고 내것에 집착하게 됩니다. 이런 이유로 짧은 시간이나마 꾸준히 하루에 몇 줄씩은 불교 혹은 명상에 대한 책을 읽으려 하는 것이죠.
Read more...
안녕하세요. 이번 글은 책 ”일의 감각, 원제 Expert”에서 발견한 한 문장에서 시작했습니다. 장인의 작업을 소개하며 “부서지기 직전의 재료로 작업하기”라는 개념이 있었는데 아마 재료 그 물성의 한계를 파악하고 최고의 결과를 얻기 위해 해당 재료가 허용하는 한계까지 밀어붙여 작업하는 걸 의미했던 것 같습니다. 다중 감각을 이용하여 작업물의 상태를 파악하고 재료의 한계를 직감적으로 파악하여 다루는 장인의 모습이 멋졌습니다. 그럼 저와 같은 소프트웨어 엔지니어에겐 “부서지기 직전의 재료로 작업하기”는 무얼 의미할까요. 먼저 소프트웨어라는 작업물이 부서지는 상황을 생각해 봤습니다.
Read more...
#reading #tech #diy
최근 책 Livewired를 읽었습니다. 뇌과학의 최신 연구를 기반으로 다양한 사례들을 소개시켜주는데 두뇌의 유연성, 강력함을 확인할 수 있습니다. 자연이 빚어낸 두뇌라는 소프트웨어는 다양한 환경 변화에 적응할 수 있습니다. 저자는 우리 두뇌와 신체의 관계를 포테이토헤드 에 빗대어 표현하는데 컴퓨터의 플러그앤플레이 장치처럼 우리의 감각기관과 운동기관을 자유롭게 추가하거나 제거하는 모델입니다. 포테이토헤드를 보면 감자로 된 머리에 얼굴의 각 부분과 팔 다리 등을 자유롭게 배치할 수 있습니다. 마찬가지로 자연은 영리한 전략을 택했는데 두뇌라는 유연한 소프트웨어를 장착시킴으로써 혹시 모를 다양한 상황에서도 생존을 추구할 수 있도록 했습니다. 예를 들어 후천적으로 시각 혹은 쳥력을 잃거나 다리 혹은 손을 못 쓰게 되는 경우에도 두뇌는 남은 자원에 집중하여 살아남는데 집중합니다. 태어날 때부터 앞다리를 사용하지 못하는 개는 두 다리로 걷는 법을 익히고 눈이 멀게된 사람은 소리로 세상을 보는 법을 익힙니다. 뜻하지 않은 변화는 돌연변이에서도 발생합니다. 돌연변이로 팔이 하나 더 생기거나 어떤 결함 혹은 의도치 않은 변화가 있어도 두뇌는 주어진 상황에서 최대한 적응하려고 노력합니다.
Read more...
요리사, 도예 장인, 그래픽 디자이너 등 뭔가 만드는 사람들은 자신만의 작업공간과 질서를 만듭니다. 소프트웨어 엔지니어에게 가장 중요한 도구는 프로그램을 작성하는 코드 편집기 입니다. 이번 글에서는 코드 편집기를 바꿔온 여정을 소개하며 제가 생각하는 코드 편집기의 필수 요소들을 이야기해보겠습니다.
Read more...