-
General optimization의 끝?IT 2022. 1. 30. 02:42
요즘 컴퓨터의 각 분야들 추세를 보면 general한 최적화는 이미 할 만큼 해서 이제는 domain-specific한 최적화로 넘어가는 것 같다. 예를 들어 컴퓨터 아키텍쳐 쪽을 보면, 이제는 general-purpose 아키텍쳐보다는 domain specific 아키텍쳐 (DSA)들이 많이 주목받고 있다. 즉, CPU보다는 xPU의 최적화가 활발히 연구되고 있다. "Cambrian explosion of novel computer architectures"라는 말도 나온다. 특히, 당연히 딥러닝을 위한 아키텍쳐들이 가장 주목받고 있다. 컴파일러 등도 마찬가지다.
요즘 네트워크 관련 연구를 시작해서 공부 중인데, 이쪽도 마찬가지다. 기존에 TCP 기반으로 모든 통신을 처리했다면 지금은 UDP 기반의 커스텀 프로토콜들이 많이 사용되고 있다. TCP는 너무 옛날에 디자인된 프로토콜인지라 현재의 워크로드(ex. 비디오 스트리밍 등)에 적합하지 않고 과도하게 보수적인 측면(ex. 재전송, slow start)이 있어 성능에 한계가 있기 때문이다. 특히 latency-critical한 애플리케이션들에서는 TCP를 사용하기 어렵다.
대표적인 예로 온라인 게임이 있다. 게임에서는 지연 시간이 조금이라도 길어지면 유저들의 클레임이 극에 달할 것이다. 따라서 일반적으로 클린한 UDP 위에 꼭 필요한 기능들만 얹은 커스텀 프로토콜을 사용한다. 실시간 서비스인 video conferencing이나 VoIP도 마찬가지다. 이 애플리케이션들은 그 특성 상 이미 지나간 데이터는 쓸모가 없어진다. 따라서 패킷 로스가 발생했을 때 로스된 패킷을 굳이 재전송 요청해서 받기보다는 새로운 incoming 패킷을 받는 게 더 유리하다.
또한, 현재 인터넷 트래픽의 상당 부분을 비디오가 차지하고 있는지라 실시간 비디오 스트리밍 관련 프로토콜들인 SRT(Secure Reliable Transport), WebRTC 등이 등장하며 주목받고 있다. 구글에서는 TCP를 대체할 차세대 범용 프로토콜로 QUIC(Quick UDP Internet Connections)를 밀고 있다.
그렇다면 점점 고인물화가 되고 있는 이런 상황에서 내가 해야할 것은 무엇일까?
1. 이미 고인물인 분야를 파서 더 심한 고인물이 되기
학부 동안 전문성에 대한 갈증을 많이 느꼈었다. 이걸 해결하려면 결국 고인물 분야에 참전해서 정면승부하고 더 심한 고인물이 되어야 할 것이다. 이를 위해서는 오랜 시간동안 연구되어온 분야를 차근차근 공부하면서 깊이를 쌓아가는 것이 중요하다.
하지만 한편으로는 1) 내가 그 정도 고인물이 될 수 있을지 2) 과연 한 분야를 그렇게 파는게 계속 재밌을지 3) 미래에도 그 분야가 살아있을지 등 걱정이 되기도 한다. 1)은 열심히만 한다면 어느 정도 해결될 문제라고 해도, 2)와 3)은 어떻게 될지 아무도 모른다.
2. 새롭게 떠오르는 분야에 뛰어들어서 그 분야가 고인물화가 되어가는 과정에 탑승하기.
새롭게 떠오르는 분야는 변화가 빠르기 마련이다. 그래서 그 빠른 변화를 잘 따라가면서 배우고, 그렇게 그 분야가 조금씩 고인물화가 될 때 나도 같이 고인물화가 되는 것. 이 경우 당장은 빠르게 배우고 적용하는 능력이 중요하다. (당연히 기본적인 뼈대 지식들은 다 갖추고 있어야 한다.) 이 '빠르게 배우는 능력'이라는 게 실체가 명확하지 않아서 스스로 전문성이 부족하다는 느낌을 받기 쉬운 것 같다.
그런데 우리 교수님을 보며 이거도 엄청난 능력이라는 걸 깨닫는 중이다. 잘 모르는 내용을 설명 듣고 빠르게 이해하고 협업하는 능력은 큰 프로젝트를 할 때 중요하다. 특히 interdisciplinary 연구 같은 경우 이런 능력을 가진 사람이 꼭 필요한 것 같다. 그래서 이쪽 테크를 타는 거도 괜찮을지도?
(물론 컴퓨터공학 분야 전체를 다른 공학이나 자연과학 분야와 비교하면, 새롭게 떠오르는 분야이고 깊이가 부족한 분야이긴 하다. 이 안에서 고인물 분야니 새로운 분야니 나누는게 가소로워 보일지도 모르겠다.)
'IT' 카테고리의 다른 글
[비디오 코덱] FFmpeg Error Resilience 코드 뜯어보기 (0) 2022.08.28 [비디오 코덱] Error resilience (0) 2022.07.31 [웹] 홈페이지 SSL 인증서 오류 고치기 대소동 (0) 2021.11.23 HCI design study에 대한 단상 (0) 2021.10.10 시스템 연구에 대한 단상 (0) 2021.09.16