공부한것들을 정리하는 블로그 입니다.
Server 개발자가 된다면? 본문
1. 서버 개발자들은
- 어떤 일을 하고
- 어떤 스킬 셋을 다루는지
2. Server란?
- 요청에 대해 응답해주는 애플리케이션, 혹은 그런 애플리케이션이 돌아가는 하드웨어
- 각종 디바이스에서 인터넷을 경유하여 요청을 보내면, 그 요청을 처리해서 디바이스에 리턴해주는 행위를 하는 애플리케이션 혹은 그런 애플리케이션이 돌아가는 하드웨어를 서버라고 합니다.
- 클라이언트 애플리케이션(앱, 웹 등)을 통해 서버에 요청을 보내게 되면
- 요청을 받은 서버 애플리케이션들은,
- 파일 시스템이나 데이터베이스 혹은 외부 데이터를 통해 접근하여
- 사용자가 필요로 하는 데이터를 잘 조합한 후
- Frontend로 다시 전달을 하고,
- Frontend는 사용자들이 볼 수 있는 화면으로 데이터를 재구성하여 화면을 통하여 전달
- 그림에서 맨 오른쪽에 Backend라고 되어있는 부분이 서버가 하는 일이라고 보실 수 있습니다.
- 이 도식은 상당히 단순하긴 한데
- 실제 비즈니스 환경에서는 데이터를 다 나누어 관리하고
- 애플리케이션들도,
- 하나의 애플리케이션이 모든 내용을 다 처리하지 않고
- 구분되어 있고
- 서로 데이터를 주고받으며 최종적인 데이터 형상을 만들어내기 때문에,
- 실무 환경에서는 그림보다는 훨씬 더 복잡하게 구성된다고 이해해 주시면 좋을 것 같습니다.
3. 서버 개발자가 하는 일 (개념)
- 서버 개발자가 하는 일을 요약해 보면,
- Client를 통해 사용자의 요청을 받아서
- 각 Client 가 필요로 하는 정보를 취합하고 정리하여
- Client로 전달해 주는 애플리케이션 개발을 하는 사람들을 서버 개발자로 보실 수 있습니다.
- 물론 데이터를 다루고 정리하는데 필요한 운영 틀도 만들고 있습니다.
- 서버 개발자의 업무는,
- 회사의 규모가 클수록 앞에서 말씀드린 업무에 한정되어 업무를 하고,
- 회사의 규모가 작을수록 서버 본연의 업무와 연관된 업무까지 수행하는 경향이 있습니다.
- 서버 개발자는 약간의 확장 업무도 수행하지만 비교적 서버 영역에 한정되어 업무를 하는 편이라고 말씀드릴 수 있을 것 같습니다.
4. 서버 개발자가 하는 일 (실무)
- 주요업무와 개발 프로세스는 아래와 같습니다.
- 주요업무
- 프로젝트 구성원들과 함께 프로젝트의 방향성 및 아이디어 등을 논의하고
- System Engineer와 Network Engineer(인프라팀, 보안팀, 운영팀)과 함께 시스템을 설계하며
- DBA의 도움을 받아 DB를 설계 및 쿼리를 작성하고
- 데이터엔지니어로 부터 각종 분석데이터를 받아
- Front(앱, 웹 등)에 데이터를 제공하는 애플리케이션을 개발하고
- QA조직(QA, 지원, 영업, 현업)과 함께 애플리케이션의 문제점을 파악한 후
- k8s 기반으로 클라우드 환경에서 애플리케이션을 운영
- 서버개발 프로세스
- 프로젝트 구성원들과 서비스 아이디어 등 논의
- 서비스 기획안 분석 및 피드백 (서비스와 협업이 필요 할 경우)
- 클라이언트와 통신 방식 설계, 시스템 설계 및 업무분장
- 각 개인별 및 그룹별 일정 확정
- 개발진행 & 코드리뷰 진행 (github 활용)
- 개발완료, 개발자 내부 및 기획 담당자, QA조직 테스트 진행
- 릴리즈 일정 수립 및 릴리즈 진행
5. 서버 개발자들이 사용하는 기술
- 언어
- Java를 가장 많이 사용
- 그외 Python, Kotlin
- 프레임워크
- Spring, Django
- DB
- MySQL, ES
- 그 외
- javascript 와 react 등 다양한 기술을 사용
- "이런 거 써야 해요" 라고 가이드하지 않음
- 각 환경과 서비스에 맞춰 최적의 기술을 테스트하여 적용
- 사용 기술은 부서마다 차이가 있음
- 각 서비스에 잘 맞는 기술임을 스스로 증명하실 수 있으면 어떤 기술이든 자유롭게 사용할 수 있습니다.
6. 서버 개발자들이 담당하는 서비스 / 플랫폼은?
- 사실상 모든 서비스에 포진되어 있는데요.
- 서비스들과 함께 이를 지원하는 전사 플랫폼 : 예를 들면, 비즈니스플랫폼
- K8S를 운영하는 : 클라우드 플랫폼
- 기술품질을 보장하는 : 기술품질 플랫폼
- 스팸 및 어뷰징을 대응하는 : 스팸 어뷰징 대응 플랫폼
- 등 거의 모든 영역에서 서버 개발자들이 활약하고 있습니다.
- 서버 개발자들은 계속 새로운 세상을 위해 노력 중이고,
- 혁신적이고 안정적인 서비스를 구현하기 위해
- 다양한 기술로 무장한 최고의 전문가 집단입니다.
7. Server 개발자, 가장 중요하게 보는 역량은 무엇인가요?
- 공통적으로 보는 기준
- 지원자들이 현재 가지고 있는 지식과 기술은 깊지 않은 수준일 것 같아요.
- 때문에 지식과 기술보다도
- 실무 하시면서 업무를 진행하는 방식이나
- 커뮤니케이션 스킬,
- 조직에 잘 융화되어
- 함께 성장할 수 있는 분인지
– hoon
- 최소한의 역량 : 학교 과정에서 배우는 CS 기본 역량 정도
- 이밖에는
- 얼마나 학습력이 좋은지,
- 학습력을 토대로 얼마나 성장 할수 있는지가 핵심 포인트
- 또한 적극적으로 알고자 하는 의지와 행동이 중요합니다.
- 예를 들면 어떤 문제가 있을 때 구글링을 하거나 논문을 찾아보는 등 스스로 방법을 찾아보고,
- 그래도 모르면 주위 선배, 멘토 통해 질문하면서 적극적으로 수행
- 인재상은
- 적극적으로 아이디어를 내고 의견 조율할 수 있는 커뮤니케이션 역량,
- 시행착오를 해나가며 팀워크를 발휘하며
- 역량을 같이 쌓아 나갈 수 있는 분입니다.
- 실제적인 기준을 궁금해하실 것 같아서 저도 잠깐 고민을 해보았는데,
- 지원자분들이 너무 어렵게 생각하시는 것 같다는 생각이 살짝 들었어요.
- 내가 최소한의 기술역량에 미달하지 않을까? 하는 두려움이 있으신 것 같은데
- 기본적인 CS 관련 기본 지식을 갖고 계시면 역량은 충분하다고 생각합니다.
- 그다음에 필요한 것은 앞서 두 분이 말씀 주신
- 배우려는 자세,
- 얼마나 빨리 습득하고 이해하는가인데,
- 얼마나 많이 알고 있냐보다는 얼마나 많이 배울 수 있는가가 더 변별력이 있다고 생각해요.
- 우선은 코딩 테스트를 잘 통과하셔야겠고,
- 이외에는 면접관에게 본인이 갖고 있는 열정을 잘 어필해 주시면 충분
- 빠르게 배우려는 자세가 가장 중요한데,
- 이것이 한마디로 얘기하면 열정인 것 같아요.
8. 서버 개발자로 어떤 업무를 하게 될까요?
- 서비스 업무. 즉,
- 톡과 관련된 서버 개발
- 포털 쪽 Daum 과 관련된 서버 개발
- 광고 비즈니스 플랫폼
- 전사 클라우드 관련 백엔드
- 큐엔에이
- 품질 플랫폼
- 등에서 다양하게 업무를 하실 수 있습니다.
9. 가산점? 유독 눈길이 가고 열정 있는 친구라고 생각하신 사례가 있는지 궁금합니다.
- 열정 있고 일 잘한다 고 생각한 사례
- 면접
- 비전공자 셨기 때문에 전공자에 비해 불리할 수도 있다고 생각하고
- 면접을 보았는데 생각보다 기본기가 잘 잡혀있고,
- 도메인에 대한 이해도가 높은 분이었어요.
- 인터뷰 이후
- 과정 중에 과제의 요구사항을 심도 있게 이해하고
- 관련하여 필요한 기반 기술을 빠르게 배우셨던 것이 인상 깊었습니다.
- CS 지식은 전공자들보다는 조금 부족했지만 굉장히 높은 점수
- 과제
- 파일럿 프로젝트가 될 수도 있고 실제 돌아가는 기술 플랫폼의 일부 모듈 혹은 기술 리서치 관련 과제가 될 수도 있어요
- 주어진 과제를 다 하시고
- 플러스로 본인이 기획적인 아이디어를 추가하고
- 스스로 리서치해서 제안하는 분들이 있었어요.
- 스스로 아이디어를 내고 고도화할 수 있는 방법에 대해 사고하고 있다는 생각이 들어 눈길이 갔습니다.
- 또한 과제 외에도
- 조직에 팀워크를 하는 과정에서
- 리더십을 발휘한다거나
- 팀워크를 잘 이끌어내는 분들이 있는데,
- 그런 분들을 볼 때 눈길이 갔던 것 같습니다.
- 과제
- 요구 되는 것만 잘 완성하는 케이스가 있고,
- 비록 프로젝트는 시간이 없어 완성도가 조금 떨어졌지만
- 플러스알파로 "이런 부분이 추가되어야 이 프로젝트에 도움이 되지 않을까?" 하는 고민을 한 흔적이 보이는 분들이 있었어요.
- 주어진 과제만 완성한 분들보다는 후자가 훨씬 더 돋보였던 기억이 있습니다.
- 특히 기억에 남는 분은 java를 한 번도 안 써본 분인데,
- 기간동안 자바를 기대보다 훨씬 더 잘하게 된 분이 있는데
- 그분이 얼마나 많이 노력했는지 유추가 되어 기억에 남습니다.
- 또한 개인적으로 제가 높은 점수를 주고 싶은 분들은
- 어떤 기술을 사용할 때
- 이 기술이 여기에 왜 필요한가를 철두철미하게 고민하며
- 원리를 알아가는 분에게 높은 점수를 주게 되는 것 같습니다.
10. 도메인 이해 능력 vs 기술적 고도화 능력? 이분화해서 평가한다면 어느 쪽이 더 중요할까요?
- 이성이 중요한가 감성이 중요한가라는 질문과 같습니다.
- 특히 서비스에 관련된 개발자에게는 둘 다 중요한 부분인데요.
- 어느 한쪽이 뛰어난데 다른 한쪽이 완전히 결여되어 있다면 어렵지 않을까 싶습니다.
- 둘 중 한쪽이 뛰어난데 한쪽이 부족한 경우는 많이 없을 것 같다는 생각도 듭니다.
- 둘 다 중요하지만 정말로 굳이 우선순위를 따지자면,
- 엔지니어이므로 기술 쪽이 우선이라고 답변드릴 수 있을 것 같습니다.
카카오의 Server 개발자가 된다면?
https://tech.kakao.com/2022/04/19/2022-kakao-tech-internship-server/
'잡담 > 개발자로서 읽을거리' 카테고리의 다른 글
구글 공식 이력서 가이드 영상 (0) | 2022.08.02 |
---|---|
(링크)코드리뷰와 대용량트래픽 처리 (0) | 2022.05.24 |
질문 및 답변 : Restful의 정의에 대해 잘 모르겠습니다. (0) | 2019.12.20 |
(펌) 4년차로 접어든 웹 개발자의 3년차 늦은 회고 (0) | 2019.12.16 |
모두가 원하는 개발자 되기 10단계 (0) | 2019.06.11 |
잡플래닛 검색 ( IT/웹/통신 산업군 ) (0) | 2019.06.11 |
(펌)3번째 직장에 오기까지 (0) | 2019.06.11 |
주니어 개발자를 위한 취업 정보 (0) | 2019.06.11 |