테스트코드를 작성해야 하는 이유 1) 잘 작동하는, 깔끔한 코드를 얻기 위해서(궁극적 목표) 테스트를 쉽게 하기 위해서는, 어플리케이션 코드를 테스트하기 쉽게 짜야됨 결국 테스트 코드를 짜기 위해 노력하다보면 코드가 깔끔해지게 됨 2) SW개발 시간의 단축 테스트 코드 작성 전 ...
[Backend] 쿠키와 세션
HTTP의 특징 일단, HTTP란 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약이다. 서버의 자원을 절약학기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결상태가 유지 되지 않고(비연결성-Connectionless), 연결 해제 후에 상태 정보가 저장되지 않는다(비상태성-Stateless) ...
[Backend] 분산 서버 처리를 위한 기술
1) 로드 밸런싱(Load Balancing) 부하 분산을 위해 가상 IP를 통해 각 서버에 Request를 분배하는 기능 LoadBalancer 2) Scale Up, Scale Out 서버의 부하를 체크하여 서버를 늘리거나 성능을 향상 시키는 방식 스케일 업(Scale Up): 서버에 CPU나 RAM 등을 추가하여 서버의 하드...
[Backend] 로드 밸런서 사용 시의 이슈 중 세션 관리 문제
로드 밸런서 사용 시의 이슈 중 세션 관리 문제 로드 밸런서에 의해 이전 요청과 현 요청에 분배되는 서버가 다를 경우 세션 관리 일관성에 문제가 발생한다. 로드 밸런서 세션 관리 문제의 예시 1) 먼저 로그인 요청을 A서버로 보낸다. A서버의 세션에는 martin이라는 값이 저장되고 A서버에서는 로그인 성공이라는 응답을 보낸다. 2...
[Backend] 동기&비동기&block&non-block
동기 & 비동기(데이터를 받는 방식) 동기(synchronous : 동시에 일어나는) 말 그대로 동시에 일어난다는 뜻 요청과 그 결과가 동시에 일어난다는 약속 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 함 시간을 맞추는 것, 즉 요청을 하면 응답 데이터가 올때가지 기다리며 시간을 맞춤 ...
[Backend] Semantic Versioning
Versioning? 소프트웨어의 패키지가 새롭게 업데이트 될 때, 생각보다 다양한 문제에 직면하게 된다. 기능의 사용법을 바꾸어버리거나 동작 방식의 변경 같은 변화들은 그에 의존하는 다른 소프트웨어를 의도대로 동작하지 못하게 하므로, 새로운 변화와 기존의 것을 구분할 필요가 생겼다. 이로 인해, 버전이라는 개념은 소프트웨어 패키지의 변화를 ...
[Backend] Refactoring(리팩토링)
리팩토링의 개념 소프트웨어를 보다 쉽게 이해할 수 있도록 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법(이해하기 쉬운 코드가 수정하기도 쉬움) 리팩토링의 목적 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것 리팩토링을 하는 이유 유지 보수를 쉽게 하기 위해(코드를 이해하기 쉽고, 수정하기 쉽도록 하기 위해)...
[Backend] LoadBalancer(로드 밸런서)
로드 밸러서란? 부하 분산을 위해 가상 IP를 통해 각 서버에 Request를 분배하는 기능 즉, 대용량 트래픽을 장애없이 처라히기 위해 여러 대의 서버에 적절히 트래픽을 분배해주는 기능 로드 밸런서의 예시 다음 그림과 같이 Request A~F는 로드 밸런서 알고리즘에 의해 적절하게 분배된다. 만약 라운드 로빈 방식으로 분배된...
[Backend] Debugging(디버깅)
디버깅이란? 디버깅의 뜻은 프로그램 실행 시 문제를 일으키는 오류, 즉 ‘버그’를 찾아 해결하는 과정을 의미한다. 이 버그는 크게 문법적 오류와 논리적 오류로 분류할 수 있다. 문법적 오류는 말 그대로 프로그래밍 언어의 문법에 맞지 않는 코드가 있을 경우 발생하며 대체로 IDE로 해결할 수 있기에 디버깅이 쉬운편이다. ...
[AWS-EC2] Ec2에 Chrome 및 ChromeDriver 설치
Chrome 설치 1) yum 저장소 생성 sudo vi /etc/yum.repos.d/google-chrome.repo 1-2) 아래와 같이 파일 내용작성 [google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/<br>stable/$base...