[기술 면접 대비] CS는 어디에 써먹을 수 있을까요? - 네트워크편
F-Lab : 상위 1% 개발자들의 멘토링
"CS공부는 너무 지겨운데 정말 어디에 써먹을 수 있을까요..?"
취업/이직을 준비하는 개발자분들께 자주 듣는 이야기 중 하나가 “CS 공부는 하는데 어디에 써먹어야할지 모르니 동기부여도 안되고 막막하다..” 인데요!
IT서비스 기업과 빅테크 기업으로 취업/이직 준비를 하시는 분들을 위해 CS 지식의 활용처를 알 수 있는 꼬리질문 컨텐츠를 만들어보았습니다 🔥
이번 편에서는 네트워크의 기본적인 내용에 대한 얘기와 그 지식을 활용하여 어떤 문제들을 해결할 수 있는지를 소개하고 있습니다.
많은 분들께 도움이 되길 바랍니다!
---
💡 내용의 구성
테크 기업에서 물어보는 정도로 깊이있게 질문을 구성했습니다.
내 지식으로 체화하려면 생각을 많이 해야합니다. 스스로 찾아보고 생각하실 수 있도록 일부러 답은 적지 않은 것도 있습니다. 대신 찾아보시는데에 가이드가 될 수 있도록 검색 키워드를 첨부했습니다.
깊이있게 접근하다보면 컴퓨터 사이언스 지식이 나오는데요, 자바 편이지만 이와 같은 이유로 컴퓨터 사이언스 관련 질문도 나옵니다.
💡 읽는 방법
꼬리 질문 형태로 질문하다보니 질문을 글머리 기호를 사용하여 단계별 형태로 구성했습니다. 단계별로 질문을 확인하면서 읽어보세요.
답을 보기 전에 질문에 대해 스스로 생각해보고 답을 도출해 보세요.
질문 키워드가 없는 것은 질문 자체가 키워드인 경우가 있습니다. 구글에 비슷하게 검색해 보세요.
---
01. 본질적인 질문
네트워크 통신은 성능을 상당히 저하시키는 작업이라고 알려져 있습니다. 왜 그럴까요?
Q. 빛의 속도는 1초에 지구를 몇 바퀴 돌 수 있을까요?
지구 반대편에 있는 미국에 있는 서버와 TCP 통신을 하려면 우리는 어느 정도의 성능 저하를 감수해야할까요?
TCP로 통신을 하려면 어떤 과정들을 거치게되나요?
3way handshake → 요청 → 응답 → 4way handshake
기본적으로 총 9번의 통신을 해야합니다. 즉 지구를 4바퀴 반 돌아야하며 0.5ms 이상이 소요될겁니다.
Q. 여러분이 지금 사용하고 있는 인터넷의 대역폭은 얼마인가요? 즉 초당 어느 정도의 데이터를 주고받을 수 있나요?
우리가 개발하면서 네트워크를 통해 주고받는 데이터는 어떤것들이 있을까요?
웹, 모바일에서 사용되는 이미지, 폰트, 동영상
웹, 모바일에서 서버에 요청하는 JSON 데이터
서버에서 데이터베이스와 주고받는 데이터
마이크로서비스에서 다른 서비스를 호출할 때 주고받는 데이터
위와 같은 데이터를 주고받을 때 데이터의 용량이 커지면 어떤 문제가 발생할까요?
주어진 대역폭보다 큰 데이터를 주고받으면 지연이 발생합니다.
02. 위의 이론을 활용해 해결할 수 있는 문제
웹페이지를 만들었는데 접속했을 때 페이지가 뜨는 속도가 느립니다. 빠르게 하려면 어떻게 해야할까요?
폰트, 이미지들의 파일 용량이 크면 네트워크로 전송하는데에 시간이 오래 걸려 성능이 저하될 수 있습니다.
Image Compressor 를 검색해보시면 이미지의 용량을 줄일 수 있습니다.
이미지나 동영상의 사이즈를 줄이는 것도 방법입니다. 대부분의 상황엔 초고화질의 이미지가 필요 없기 때문입니다.
폰트도 저용량버전이 있습니다.
개발자 도구를 켜셔서 네트워크 탭을 보시면 어떤 것들이 용량이 큰지 확인하실 수 있습니다.
---
이외에 멘토님께서 아래 질문에 대해서 꼬리 질문을 확인해 보고 싶으시다면 전체 인터뷰를 확인해 보세요!
지그재그, 에이블리와 같은 쇼핑몰 모아보기 서비스를 만들려합니다. 그럼 아주 많은 쇼핑몰들을 크롤링해야하는데 크롤링 속도를 어떻게 튜닝할 수 있을까요?
서버를 운영중인데 유저가 많아져 대용량 트래픽을 처리해야합니다.
➡️ 아티클 이어서 보기 (https://f-lab.kr/blog/cs-interview-network)
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 1월 17일 오전 7:49