본문 바로가기

프로그래밍/Web programming

(6)
REST 기반의 간단한 분산 트랜잭션 구현 - 1편 (퍼옴) 이 글은 필자가 스프링 부트Spring Boot로 TCC를 구현해 본 것으로 부제를 달자면 '스프링 부트로 구현하는 TCC'이다.TCC 이외에 이벤트를 사용하여 구현하는 방법은 김형준 님의 글 대용량 환경에서 그럭저럭 돌아가는 서비스 만들기에 일부가 나와 있으니 참고하길 바란다.나의 REST 시스템 시나리오마이크로 서비스로 만들어진 온라인 쇼핑몰에서 아래와 같은 순서로 주문이 처리된다고 가정해보자.[1]1 단계 : 클라이언트는 주문 서비스(OrderService)에 주문을 요청한다.2 단계 : 주문 서비스는 재고 서비스(StockService)에 재고 차감을 요청한다.3 단계 : 주문 서비스는 결제 서비스(PaymentService)에 결제 요청한다.4 단계 : 주문 서비스는 구매 주문을 생성한다.주문을..
OWASP Top 10 출처: https://blog.naver.com/ym6688/221381596236 OWASP Top 10 in 2017년 OWASP(The Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안프로젝트이다.주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구한다. OWASP TOP 10 - 2017년 발표 A1. 인젝션 A2. 취약한 인증 A3. 민감한 데이터 노출 A4. XML외부 개체 (XEE)[새로나온 공격] A5. 취약한 접근 통제(취약한 접근 통제) 안전하지 않은 직접객체 참조와 기능 수준의 접근통제 누락을 합한 것 A6. 잘못된 보안 구성 A7. 크로스 사이트 스크립팅(XSS) A8. 안전하지 않은 역직렬화 [새로나온 공격,..
connection/read timeout Connection Timeout: client가 server에 연결을 요청했으나 어떠한 사유로 시간이 지연되는 경우를 대비하여 시간 제한을 두게 되고,그 시간이 경과한 후 Connection Timeout이 발생한다. 비유: 맛집에 갔는데 대기줄이 길다. 그 줄이 길어서 10분만 기다리다 나간다. Read Timeout:client가 server로의 연결은 성공 했으나 그 요청에 대한 로직을 수행하는 시간이 지연되는 경우를 대비하여 시간 제한을 두게 되고, 그 시간이 경과한 후 Read Timeout이 발생한다. 비유:맛집에 들어가서 주문을 했는데 요리가 도저히 나오질 않아 나간다.
TCP/IP & TCP & UDP TCP/IP: Transfer Control Protocol / Internet Protocol인터넷 표준 프로토콜컴퓨터 간 데이터 전송 시 알맞게 나누어 전송/수신 및 정보 규격 약속 TCP: 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당IP: 패킷 전송 TCP: Transfer Control Protocol 연결이 성공해야 통신이 가능하도록 함데이터 경계를 두지 않음(Byte stream)신뢰성 있는 데이터 전송1:1 통신 UDP: User Datagram Protocol연결없이 통신 가능데이터 경계 구분함(Datagram Service)신뢰성 없는 데이터 전송(재전송이 없음)1:1, 1:N, N:N 통신
암호화(양방향, 단방향, 대칭키, 비대칭키) 양방향 알고리즘암호화된 암호문을 복호화 할 수 있다. 알고리즘: 대칭키 방식, 비대칭키 방식 단방향 알고리즘암호화 하되 복호화는 할 수 없다.알고리즘: Hash 방식 HASH는 단방향 암호임. MD5, SHA 등의 해쉬 함수가 있음. 근데 MD5, SHA-1, HAS-180은 보안이 뚫렸기 때문에 SHA-256, 512를 써야 함. 참고로 안좋은 HASH는 중복이 있기 때문에 중복이 적을수록 좋은 해시임.보안을 더 철저히 하려면 salt값을 적용하는 방법 또는 Hash 함수를 여러번 돌리는 방법 등이 있음. 여튼 개발자는 어떤걸 잘 쓰면 될지를 알면됨pbkdf2 : 솔트값과 해시함수의 반복횟수등을 지정할 수 있다. bcrypt : 패스워드를 위해 탄생해서 아주 강력한 해시 알고리즘이 적용됨. 마찬가지로 ..
Cache 참고 블로그1 Cache는 성능 향상을 위해 사용한다.브라우저 캐시와 서버단에서의 캐시가 있다. 브라우저 캐시서버로부터 받아왔던 자원들을 캐시에 저장해 둔다.일정 기간 같은 리소스 요청은 캐시에 있는 내용을 쓰게 됨으로써 서버와의 통신 비용이 줄어든다. 서버 캐시DB 조회 비용을 줄이기 위해 주로 사용된다.자주 변경되지 않는 데이터는 캐싱하여 DB 통신 비용을 줄일 수 있다. 서버 캐시에 대해서 알아보자.얘기해볼 것은 Ehcache, Memcached, Redis 1. Ehcache Spring을 사용하면 가장 쉽게 사용할 수 있는 캐시이다. # Spring boot gradle 설정compile('org.springframework.boot:spring-boot:spring-bookt-starter-c..