관리 메뉴

공부한것들을 정리하는 블로그 입니다.

Server 개발자가 된다면? 본문

잡담/개발자로서 읽을거리

Server 개발자가 된다면?

호 두 2023. 4. 14. 16:07
반응형

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/
 

반응형
Comments