기술면접을 준비하면 운영체제, 네트워크 등의 CS관련 지식을 많이 공부하게 된다.
하지만 웹개발을 해다보면 이런 지식이 어디에 사용되는지, 꼭 필요한지 의문이 생기기도 한다. 글쓴이도 기술면접을 준비하며 운영체제에 대해 공부할 때, 시스템 소프트웨어 개발자가 목표도 아닌데 왜 운영체제를 배워야하는지에 대한 의문이 생기기도 했다(절대 공부하기 싫어서 한 생각은 아니다)
실제로 습득한 이론적 배경들이 어떻게 실제 업무에 적용되는지, 또 어떻게 활용되어야 하는지 명확히 알지못하는 사람들이 많다고 한다.
하지만 전반전인 컴퓨터공학에 대한 이론적 배경 지식이 부족하다면 취업 후 기술을 사용하는 데 한계에 부딪힐 수 있다고 한다. 오늘은 CS지식을 알아야하는 이유에 대해 정리해보겠다!
상황1
사용자들이 대규모로 접속하는 온라인 쇼핑몰의 특정 프로모션 기간
알고리즘이나 자료구조의 지식이 없다면 -> 데이터 처리와 사용자 요청 응답에 지연발생 가능
해결방법
- 사용자의 요청을 균등하게 분산시키기 위한 알고리즘, 로드 밸런싱
- 사용자 정보, 데이터, 상품 정보 등을 저장하고 검색할 때 가장 효율적인 자료구조를 선택하여 빠르게 데이터 처리 가능
- 서버의 응답시간을 줄이기 위해 '멀티 스레딩'이나 '동기화'와 같은 운영체제 기법 필요
- 해당 지식이 없다면 데이터의 불일치나 서버 다운 문제 직면가능
- 많은 요청을 빠르고 안정적으로 처리가능
상황2
채팅 애플리케이션이나 좌석 예약과 같은 실시간 통신을 요구하는 경우 소켓 프로그래밍이 필요함
실시간 채팅 어플리케이션은 사용자 간 메시지를 실시간으로 교환하고, 소켓 통신은 이런 데이터 교환이 가능하게 함
- 소켓 = 프로그램 내부의 네트워크 연결지점
- 소켓 프로그래밍 = 연결 지점을 통해 데이터를 주고받는 것이 가능해지도록 하는 것
이런 소켓 프로그래밍을 위해서는 TCP, UDP, 3-way handshake와 같은 네트워크 지식에 대한 이해가 필요함
CS지식은 절대 불필요한 것이 아니다. 하기싫다고 생각하지 말고 열심히 공부하여 기본기가 탄탄한 개발자가 되도록 노력하자!
참고자료
https://fastcampus.co.kr/story_article_newcomputer
'CS' 카테고리의 다른 글
API vs Library vs Framework (0) | 2023.11.27 |
---|---|
토큰 이코노미 시대? NFT가 뭘까? (0) | 2023.09.09 |
빅데이터란? (1) | 2023.09.07 |
보일러플레이트 코드란?(Boilerplate code) (0) | 2023.06.21 |
SOLID: 객체지향 5대 원리 (2) | 2023.01.27 |