본문 바로가기

분류 전체보기93

(MSA 분산 트랜잭션) 주문-재고관리 어떻게 하지? MSA 분산 트랜잭션 MSA distributed transaction 일반적으로 온라인 커머스 서비스를 하고, 재고가 존재하는 상품을 판매 한다면 주문 - 재고차감- 결제 등의 프로세스가 필요할 것이다. 위 프로세스는 일관성을 유지해야한다. 만약 결제에서 오류가 발생했다면 재고차감, 주문까지 rollback이 되어야 일관성이 유지된다. 모놀리식으로 구성된 서비스라면 위 프로세스를 한트랜잭션으로 묶어버리던지 하는 방법이 있겠지만 MSA 환경에서는 주문, 재고관리, 결제 서비스가 나뉘고 DB도 따로 관리 될것이라 한 트랜잭션으로 처리 하는 것은 기술적으로 어렵고, 처리한다고 해도 한 트랜잭션이 너무 길어져 다른 방법이 필요하다. MSA에서 서비스간 일관성을 유지하는 방법 중 하나로 TTC가 알려져있다. T.. 2020. 7. 19.
(Redis) Redis란? 우아한 Redis 발표영상 후기 https://www.youtube.com/watch?v=mPB2CZiAkKM Cache란? - Cache는 요청결과를 미리 저장해 두었다가 나중에 빠르게 서비스 해주는것을 의미 다이내믹 프로그래밍? 앞의 연산결과를 다시 사용하는 것이 핵심! 예시) factorial -> 20880!을 계산해두면 20881! 은 금방한다 속도 디스크 < 메모리 2:8 파레토 법칙 : 실제 모든 요청은 20의 사용자가 결정한다. Cache 구조 1 - Look aside Cache 1. 웹 서버는 데이터가 존재하는지 Cache 먼저 확인 2. Cache에 데이터가 있으면 Cache에서 가져옴 3. Cache에 없으면 DB에서 읽어옴 4. DB에서 읽은 데이터를 Cache에 저장 Cache 구조 2 - Write Back .. 2020. 7. 18.
Https 통신과정, TCP/IP 핸드 쉐이킹 과정 - http는 서버에 데이터 전송시 암호화되지 않은 방법으로 전송하기 때문에 비밀번호 계좌번호 등 중요한 데이터를 서버로 전송하는 경우 https를 사용하여 통신 권장 * https는 ssl 프로토콜을 기반으로 동작하는 프로토콜이다. * ssl 인증서란 클라이언트와 서버간 통신을 제 3자가 보증해주는 문서이다. 클라이언트가 서버에 접속한 직후 서버가 클라이언트에 인증서 전달 -> 클라이언트는 이 인증서를보고 신뢰할 수 있는 서버인지 확인 후 데이터 전송등 다음절차 수행 * ssl 사용시 장점 1. 전달되는 내용이 다른사람에게 노출되는 것을 막음 2. 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 확인가능 3. 전달되는 내용이 변조되는 것을 막음 * ssl에서 사용하는 암호화의 종류 1. 대칭키 .. 2020. 7. 16.
[구글검색의 기본과 서치콘솔] 웨비나 정리 1. 구글 검색의 작동 원리 웹콘텐츠 구성 크롤링 새로 크롤링, 기존 페이지 추가 및 링크 깨짐등 확인 (색인생성) 페이지 콘텐츠 렌더링 키워드 및 정보들 기록 수십억 개의 웹페이지 1억 GB이상 색인은 단순히 키워드, 검색어 그 이상이다 그래프기반, 웹페이지 정보 + 다른유형의 정보 체계화 검색 알고리즘 - 랭킹시스템의역할 유용한 정보 관련성높은정보 신속한정보제공 - 랭킹시스템 알고리즘 관련성 유용성 출처 전문성 사용자 위치 및 설정 등등 ex) 오늘의 주식 -> 오늘+주식 단어의 뜻보다 오늘의주식정보를 보는것이 더 유용한 정보이다 검색품질 평가 가이드라인이 있음 검색 알고리즘 주요요소 - 검색어 이해 검색어 의미(intent) 를 이해해야함 전구를 바꾸는 방법 - 교체하다 우체국은 외환을 바꿔줄까요 .. 2020. 7. 10.
SQL vs NOSQL (관계형데이터베이스 비 관계형데이터베이스) SQL vs NOSQL 관계형 데이터베이스, 비관계형 데이터저장소인 NOSQL (문서 데이터베이스) 선택 기준 MSA 환경에서 개발을 하다보니 새 서비스가 나올때 마다 이 서비스는 어떤 데이터베이스를 사용하는 것이 좋을까? 고민하는 경우가 많아지는 것 같습니다. 저는 크게 RDB(관계형 데이터베이스), NOSQL(비 관계형, 문서 데이터베이스) 중에 고민하였고 두 데이터베이스 중 선택에 따른 Trade off 몇가지를 정리해보려합니다. 1. 일대다, 다대다 일대다 - NOSQL 다대일, 다대다 - SQL 애플리케이션에서 데이터가 문서와 비슷한 구조라면 (일대다 관계 트리, 보통 한번에 전체트리를 적재) 문서 모델을 사용하는것이 좋습니다. 관계형 모델은 문서와 비슷한 구조를 여러 테이블로 나누어 저장하게되.. 2020. 7. 8.
(Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom (하) (Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom https://lion-king.tistory.com/70 { try { service.count(token); // 테스트 될 메소드 } catch(Exception e) { e.printStackTrace(); } latch.countDown(); }); } latch.await(); AccessCount countRes = accessCountRepository .findByToken(token); assertNotNull(countRes); int resCount = countRes.getAccessCnt(); assertEquals(numberOfThreads, resCount); } 다중 쓰레드.. 2020. 7. 7.
(Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom (Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom "객체관계형 매핑 프레임워크를 사용하면 뜻하지않게 데이터베이스가 제공하는 원자적 연산을 사용하는 대신 불안전한 read-modify-write 주기를 실행하는 코드를 작성하기 쉽다." 오류 로그를 보던 중 동시에 같은 파라메터로 온 request들을 처리하다가 발생한 오류를 보았습니다. Duplicate entry for unique key 오류가 발생한 api는 특정업체 상품에 접근한 횟수를 카운트하는 기능을 하였고, 업체마다 토큰을 지정하여 해당 토큰이 파라메터로 들어오는 구조였습니다. 업무시간 외에 여러 방법으로 테스트한 기록을 작성합니다. 예시코드: @Transactional public void .. 2020. 7. 3.
(MessageQueue (MQ))란? 왜사용하게 되었을까? MessageQueue 란? 왜사용하게 되었을까? 먼저, MessageQueue 미사용/사용 웹 서비스 구조의 예시를 보자. 어플리케이션과 데이터베이스의 동기적 직접통신 구조 : 어플리케이션과 DB가 강하게 결합되어 있어 어플리케이션의 요청&응답 과정에서 DB 서버로의 요청&응답 모두 완료되어야 응답이 가능하다. 따라서 다음과같은 문제가 발생할 수 있다. 1. DB의 응답 시간이 길어진다면 어플리케이션 또한 그만큼 응답시간이 길어진다. 2. DB 장애시 어플리케이션이 동작하지 못한다. 3. 어플리케이션 입장에서 감당할 수있는 요청 수가 DB에서는 감당 불가능하다면, 성능저하나 장애가 발생할 수 있다. MQ를 통한 어플리케이션과 데이터베이스의 통신 : 어플리케이션은 큐에 요청을 쌓고, DB는 큐의 요청을 .. 2020. 6. 30.
(Spring) Spring Security란? 개념 및 구조 Spring Security https://spring.io/projects/spring-security Spring Security Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements spring.io Spring.io에서 설명한 Spring Security : Spring 기반 어플리케이션에서 유연하게 커스터마이징 가.. 2020. 6. 16.