본문 바로가기
도전

웹 서버를 개발할 때 어떤 요소들이 있는가 ?

by oncerun 2021. 2. 10.
반응형

 

1. 웹 생태계의 스펙 

 - HTML, HTTP(1.1 HTTP/2)

 

2. 기본 SDK, 라이브러리/프레임워크 이해와 활용

 

3. 클라이언트를 위한 API 설계

 

4. 서버 /컴포넌트/ 객체 간의 역할 분담/의존성/통신 방법 설계

 

5. 저장소 활용

 - DBMS 설계

 - Cache 적용

    -Global/Local cache 적용 범위, 라이프 사이클, 설루션 선택

 - 파일 저장 정책/ 설루션 선택 활용

 

6. 검색 엔진 연동 방식 결정

 

7. 빌드 도구

   - Maven/Gradle

 

8. 배포 전략

9. 성능 테스트/프로파일링/튜닝

    - JVM 레엘의 튜닝(GC 옵션 등)

       - 웹 서버(Tomcat, Nginx)등의 설정/튜닝

    - OS 설정의 주요 값 확인

10. 인접 기술에 대한 이해

     - Front End , DBMS 등

 

이러한 모든 지식은 개발자 한 명이 모든 요소를 깊이 있게 알아야 프로젝트에 참여할 수 있다는 것이 아닌 팀을 이룬 개발자들의 지식들이 합쳐져서 구현 방식과 정책이 결정된다.

 

 

데이터베이스

 

 보통 사용자의 요청량과 저장 용량이 많은 서비스들은 여러 저장소를 사용합니다. 다양한 저장소가 쓰여도 RDB는 여전히 가장 우선시 되는 저장소로서 RDB능력은 백엔드 개발자의 핵심 역량입니다. 쿼리의 호출 횟수나 실행 계획에 대해 효율성을 따질 줄 알아야 하며, 느린 쿼리를 모니터링하고 성능 개선하는 작업은 꾸준히 이루어져야 합니다. ORM과 같은 추상화된 프레임워크를 사용해 직접 SQL을 작성하지 않는 경우도 최적화에 대한 작업은 더욱 중요합니다.

 

 

개발 툴

 

 Jenkins, AWS 등과 같이 BackEnd에 도움이 되는 툴들은 생상성과 직결되기 때문에 중요합니다. 

사실 제 현재 목표는 어떠한 서비스를 기획할 때 어떠한 개발도구를 사용하는 게 효율적인지 선택하는 단계까지 오르는 것인데, 이걸 이루기 위해선 개발 툴에 대한 꾸준한 공부가 필요합니다. 또한 공식문서를 보고 사용하고 그 경험을 문서로 작성해 다른 사람까지 이해시키는 것은 필수라고 생각합니다.

 

 

병렬 처리

 

 보통 java 웹서버들은 기본적으로 요청을 병렬적으로 처리합니다. 그렇기에 객체가 멀티스레드 환경에서 공유 유무를 확인하는 건 중요합니다.  보통 이러한 문제는 클래스의 멤버 변수에는 스레드 세이프한 변수만 둔다라는 규칙으로 해결할 수 있습니다. 

 -추가 공부 java Executors, TheadPoolExecutor

 

 

보안 

 기본적으로 XSS, CSRF , SQL Injection 공격에 대해 대처하는 방법은 알고 있어야 한다.

 

테스트

 Rest API정도는 간단히 테스트를 만들 수 있고 단위 테스트와 통합 테스트의 구분이 명확해야 한다.

 또한 테스트가 무거워진다고 생각시 Mockito도 고려해보며 테스트의 실력을 키워야 한다. 초기 투자비용은 크지만 미래를 생각하면 복습을 꾸준히 해야겠다.

반응형

'도전' 카테고리의 다른 글

처리  (0) 2021.12.12
SQLD 합격 후 다음  (2) 2021.06.26
올해 목표  (0) 2021.04.19
과제  (0) 2021.03.06
Maven  (0) 2021.02.23

댓글