CS 공부, 면접 준비 말고 어디에 쓰이나요?
"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)