정리(백엔드)

강민창·2024년 7월 18일

개인공부

목록 보기
9/11

백엔드 개발자가 하는 일

▫ 웹 어플리케이션 개발
▫ 데이터 분석을 위한 엔지니어링
▫ 분산파일시스템, DBMS 개발

▪ Docker Container 기반의 플랫폼 서비스 구현
▪ 클라우드 콘솔 및 AWS 연동 시스템 개발
▪ 대용량 Data 관리 및 다양한 서비스 API 개발
▪ 서비스 관리 및 판매, 빌링 시스템 개발
▪ 마이크로 서비스 아키텍처 기반의 솔루션 및 연동 API 개발

백엔드 개발자의 업무

대용량 데이터, 트래픽을 고려한 서버 설계 및 구현
▫ 아키텍쳐, 서버최적화, API, DB 등등

빌드/배포 파이프라인 자동화(CI/CD)
▫ AWS 및 kubernetes 기반의 CI/CD 작업

웹 프레임워크 및 내부 관리 툴 개발
▫ 인프라 자동화 및 퍼포먼스 개선
▫ 사내 업무 자동화

백엔드 서버 개발 및 유지 보수
▫ Kotlin Spring 기반 Restful API 백엔드 서버 개발 및 유지 보수
▫ 클라우드 환경(GCP, AWS, Azure)에서의 서비스 설계 및 개발
▫ Microservice 개발 및 운영과 모니터링
▫ 최적화 및 모니터링, 트러블슈팅 등 개선 업무
▫ LMS 서비스, 크롤링 중심의 웹 서비스 설계 및 개발
▫ NewRelic, CloudWatch 등을 통해 시스템에서 발생하는 모든 이슈 사항에 대해서 추적하고 해결
▫ Diango Admin 개선 및 신규 기능 개발
▫ NodeJS 기반으로 백엔드 비지니스 로직 개발/배포
▫ 데이터 성격에 맞게 PostgreSQL과 Redis에 데이터를 적재하고 이용하는 코드 작성

서버 개발, 서버 인프라 관리
▫ 유저 오피스, 백 오피스 서버 개발
▫ 데이터베이스 서버 개발 및 운영(MongoDB, MySQL)
▫ 모바일 서비스를 위한 웹 서버 개발 및 운영(CRUD)
▫ 웹/앱 서비스 서버 개발(AWS/Node.js)
▫ 클라우드 인프라 및 서버 구성
▫ 대규모 서비스의 서버 운영 및 개발
▫ 푸시, WEB HOOK, 공지 팝업등의 액션을 위한 서버 및 워커 개발

데이터 베이스 설계 및 관리
▫ DB 고도화를 위한 시스템 구축 및 운영
▫ 서비스 DB 설계 및 개발
▫ MySQL을 활용한 DB 설계
▫ 데이터 마이그레이션
▫ 빠르고 안정적인 서비스 제공을 위한 효율적인 DB modeling 수행, Slow query 모니터링 및 개선

신규 서비스 개발 기획
▫ SaaS 기반 신규 서비스 설계 및 개발

인프라, 아키텍처 설계
▫ AWS 아키텍처 설계
▫ AWS 인프라 기획 및 운영
▫ 플랫폼 서비스 인프라 아키텍처 고도화
▫ 서비스 및 인프라의 안정성, 확장성 효율성을 개선
▫ 위 작업들은 항상 특정 상황에 맞는 것이 전제 조건

효율적인 API 설계
▪ Spring boot, Python-Django를 사용한 API 개발
▪ REST API 개발 및 유지 보수
▪ API 서버 성능 개선(로그 기반 쿼리 최적화, 코드 리펙토링, 아키텍처 개선 등)
▪ 다양한 플랫폼과의 연동 시스템 개발 및 운영
▪ NoCode툴을 이용한 어드민 구성과 API 연동
▪ Server Rendering, Client Rendering을 위한 API 설계 및 개발
▪ 다양한 Cloud Service API 활용 서비스 개발
▪ MSA 기반의 Back-end RESTful API 개발

기술공유
▫ 매일 스크럼 회의를 통해 개발 이슈사항이나 진행사항 공유
▫ 회의를 거쳐 스케줄 관리와 기술 부분을 공유
▫ 매주 스프린트 단위로 task management

협업
▫ 기술 연구소, 서비스 기획, 개발팀, 유관부서와 협업하여 비지니스 문제 해결
▫ GitHub를 통해 동료들과 수평적으로 Pul Request에 대해 적극적인 피드백 및 개선
▫ 지속적인 리팩토링


백엔드 개발 지원 도구

▪ JIRA, Redmine, Gitlab lssue 이슈 관리 도구
▪ Confluence, NAS
문서 관리 도구
▪ Git, SVN 협상 관리 도구
▪ Slack, Mattermost
소통 채널


백엔드 주 프로그래밍 언어

PHP
▪ 서버 측 스크립트 언어이자 시스템의 기반이 되는 언어
▪ 브라우저가 서버에 웹 페이지를 요청하면 서버에서 수신한 HTML 문서를 해석하고, 화면에 띄울 때 필요한 게 JavaScript였다면 PHP는 서버에 있는 데이터가 사용자와 상호작용하는 웹 어플리케이션으로 진화하여 브라우저로 넘어가도록 처리하는 데 필요함
▪ PHP로 작성된 코드를 HTML 코드 안에 추가하면 웹 서버는 해당 코드를 해석하여 자동으로 HTML 문서를 생성하기에 동적으로 빠르게 HTML 문서를 만들 수 있음
▪ HTML을 프로그래밍적으로 생성해 주고, 데이터베이스와 상호작용하면서 데이터를 저장하고, 표현하는 서버와 브라우저 간의 다리 역할을 한다고 볼 수도 있음

Node.js
▪ 크로스 플랫폼의 오픈소스 런타임 환경으로써, 브라우저의 외부에서 자바스크립트 코드를 실행할 수 있게 해줌
▪ 노드는 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 별도의 소프트웨어 없이 동작하는 것이 가능
▪ 반응속도 ↑, 확장성 ↑ 많은 양의 요청도 처리 가능해서 웹 서버의 동작을 더욱 효과적으로 통제할 수 있음
▪ 언어가 아니라 소프트웨어 플랫폼이므로 그 자체로는 아무것도 하지 못하고 서버를 직접 구현해야 함

JavaScript
▪ 웹, 모바일 앱, Node.js,desktop, machine learning 등 다양하게 활용되며 크로스 플랫폼에서 중요한 역할을 함

C++
▪ C언어의 문법과 기능을 모두 사용할 수 있는 C언어 기반 프로그래밍 언어
▪ 객체지향은 물론 절차지향도 가능한 멀티 패러다임 언어
▪ 백엔드 언어로도 많은 인기를 얻고 있다고 함

Java
▪ 객체지향 프로그래밍 언어인 자바의 가장 큰 특징은 플랫폼 종속성이 낮다는 것
▪ 운영체제에 Java Virtual Machine을 설치하면 Java 기반 프로그램은 어떤 환경에서도 똑같이 동작함
▪ 특정 플랫폼에 의존하지 않는 독립성을 갖추고 있어, 생산성과 기기 호환성이 높고 소스코드 가독성이 좋음

Python
▪ 딥러닝, 데이터 사이언스, 인공지능 분야에 많이 사용됨
▪ 언어 자체가 64bit를 넘어가고 허수를 기본 지원하며 소수점과 유리수를 정밀하게 다룰 수 있는 등 과학과 공학 분야에서 필요한 여러 기능을 기본적으로 제공함


백엔드 신입 채용공고에서 요구하는 역량

0개의 댓글