일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- sql
- Java
- 알고리즘
- javascript
- python
- dbms
- 항해99
- Queue
- Algorithm
- 자바의정석
- spring
- DB
- js
- dfs
- 코딩테스트준비
- 코딩테스트
- 코테
- jsp
- til
- 99클럽
- 암호학
- 자료구조
- 개발자취업
- BFS
- generic class
- JPA
- 생성자
- 크루스칼
- 가상컴퓨팅
- 공개키 암호화
- Today
- Total
목록개발 공부 (80)
PLOD
현업에서 이커머스 관련 프로젝트를 진행하려면 대규모 트래픽 대응, 마이크로서비스 운영, 캐시, 배치 작업 등 다양한 기술을 활용하여 상품의 선착순 구매를 효과적으로 지원하는 서비스를 만들어야 하는 상황이 생길 것이다.상품의 선착순 구매 페이지는 많은 트래픽이 예상되며, 예상치를 상회하는 트래픽이 몰리는 상황을 가정한다.실제 대규모 트래픽 자체를 다루는 기술은 클라우드 기술을 활용한 경우가 많아 이번 프로그램에서 다루기 어려워서, 이번에 내가 진행한 프로젝트에서는 대규모 트래픽과 분산서버 운영을 고려한 설계능력을 주로 다루고자 한다. 먼저 동시성 문제란, 동일한 하나의 데이터에 2 이상의 스레드, 혹은 세션에서 가변 데이터를 동시에 제어할 때 나타는 문제로,하나의 세션이 데이터를 수정 중일때, 다른 세션에..
캐싱(Caching)캐시는 데이터나 연산 결과를 임시로 저장하여 나중에 동일한 요청에 빠르게 응답할 수 있는 메모리 또는 저장공간을 의미한다.대규모 트래픽 처리에서 캐시는 반복적으로 요청되는 데이터나 연산을 캐싱하여 서버의 부하를 감소시키고 응답시간을 단축시킨다. → 효율적인 자원 활용 + 높은 확장성 , 높은 성능 제공 RedisRemote Dictionary Storage모든 데이터를 메모리에 저장하고 조회하는 in-memory DBkey-value 구조의 데이터 관리 시스템No-SQL실시간 처리가 요구되는 응용 프로그램에서 사용Redis 장점빠른 I/O 처리레디스는 데이터를 메모리에 저장하여 빠른 읽기와 쓰기 작업을 가능하게 한다캐싱, 세션 저장, 실시간 분석등에서 높은 처리 속도가 요구 되는 ..
MSA작고 독립적으로 배포 가능한 각각의 기능을 하는 서비스들로 구성된 아키텍쳐모놀리식 서비스에서 각각의 비즈니스 로직을 분리하여 개별 프로젝트로 생성한 뒤 가장 앞단에 API Gateway와 같은 분배기를 통해 각 서비스 서버에 요청을 분산하여 관리 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 자향 아키텍쳐서비스는 기능별로 구분서비스의 교체가 쉽다각 서비스의 최적인 개발언어 DB, HW , 소프트웨어 환경을 사용하여 구현각 서비스는 독립적인 배포가 가능MSA 장단점장점서비스별 스케일링 가능서비스별 다른 프레임워크 사용 가능 (서비스 별 독자적 운영)하나의 서비스가 off 되더라도 나머지 동작 가능부분적으로 로직 업데이트 가능단점초기 구성의 난이도시스템이 돌아가지만 특정 서비스가 o..
@PathVariable경로 변수를 표시하기 위해 메서드에 매개변수에 사용된다경로 변수는 중괄호 {id}로 둘러싸인 값을 나타낸다URL 경로에서 변수 값을 추출하여 매개변수에 할당한다경로변수는 값을 반드시 가져야 한다 → 값이 없으면 404에러 출력주로 상세 페이지, 수정, 삭제와 같은 작업에서 리소스 식별자로 사용된다서버에 보내려는 데이터를 URL 경로에 표시할 수 있다. // GET http://localhost:8080/hello/request/star/Robbie/age/95@Controller@RequestMapping("/hello/request")public class RequestController { @GetMapping("/star/{name}/age/{age}") @Resp..
기존에 Controller 클래스에만 의존하여 모든 기능을 처리하도록 한다면 문제가 발생할 수 있다. 한 개의 클래스에 너무 많은 양의 코드가 존재하기 때문에 코드를 이해하기 어려움 → 가독성 떨어짐현업에서는 코드의 추가 혹은 변경 요청이 계속 생길 수 있다.문제가 발생했는데 해당 Controller 클래스를 구현한 개발자가 퇴사한다면? → 유지보수성 떨어짐 이러한 문제점들을 해결하기 위해 서버 개발자들은 서버에서의 처리과정이 대부분 비슷하다는 걸 깨닫고, 처리 과정을 크게 Controller, Service, Repository 3개로 분리하였다. Web Layer흔히 사용하는 Controller와 JSP / freemaker 와 같은 view 템플릿 영역이다Filter,Intercepter,Con..
인증과 인가인증(Authentication)인증은 해당 유저가 실제 유저인지 인증하는 개념해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것인가(Authorization)해당 유저가 특정 리소스에 접근이 가능한 지 허가를 확인하는 개념인증 과정 이후에 일어나는 확인 과정filterFilter란 Web 애플리케이션에서 관리되는 영역으로 Client로 부터 오는 요청과 응답에 대해 최초/최종 단계의 위치이며 이를 통해 요청과 응답의 정보를 변경하거나 부가적인 기능을 추가할 수 있다주로 범용적으로 처리해야 하는 작업들(ex. 인증 , 인가와 같은 보안처리)에 활용로직을 비즈니스 로직과 분리하여 관리 할 수 있다는 장점Spring SecurityFilter chain Spring에서 모든 호출은 ..