Computer Engineering15 DB mid 정리 logical data independence 에 대한 설명으로 적합하지 않는 것은? 1 1) Concerned with internal schema (v) 2) Concerned with conceptual schema 3) It is mainly concerned with the structure or changing the data definition 4) Modification at the logical levels is significant whenever the logical structures of the database are changed Conceptual schema 에 대한 설명으로 적절하지 않는 것은? 4 1) 전체적으로 통합된 데이터 구조이다. 2) 해당 기관이 필요로 하는 모든.. 2023. 4. 16. DB Connection Storm 1. DB Connection 일반적으로 DB 서버와 애플리케이션 서버는 물리적으로 분리해 운영한다. 그래서 네트워크 통신을 해야하고 서로 Connection을 맺어야 한다. 2. DB Connection Pool TCP 기반 네트워크 통신으로 Connection을 맺어야 하는데 연결을 맺을때는 3 way handshake, 연결을 끊을 때는 4 way handshake 가 필요하다. 즉 연결을 맺고 끊는데 시간이 걸린다. 사용자 요청마다 Connection 을 맺고 끊는 작업을 하게 되면 비효율적이다. 그래서 DB Connection Pool 을 이용해 애플리케이션 서버가 배포될 때 미리 DB 서버와 통신할 때 사용할 Connection 들을 만들어 놓는다. 그리고 사용자 요청이 오면 Pool 에 있는.. 2023. 2. 11. 네이버페이 주문/결제 DB 전환 이슈 우리팀은 네이버페이 주문/결제에 사용중인 Oracle DB 를 nBase-T 라는 분산 DB(사내 솔루션)로 전환 하고 있다. 1. DB 전환이란? 기존 애플리케이션 서버는 Oracle DB 를 사용하고 있다. 새로운 애플리케이션 서버와 nBase-T DB 로 문제없이 전환하기 위해선 실시간 DB 복제가 이뤄져야 한다. cf) 기존 데이터 마이그레이션은 당연히 되어 있다는 전제 cf) DB 전환할 때 꼭 새로운 애플리케이션 서버가 필요한건 아니다. 우리팀은 DB 전환 뿐만 아니라 애플리케이션도 새롭게 개발하고 있다. 새로운 애플리케이션 서버와 nBase-T DB 가 준비되면 사용자 요청을 스위칭해서 전환을 시작한다. 이때 역동기화 복제를 해주는데 롤백을 대비한 조치다. 만약 신규 서버에 문제가 생기면 기.. 2023. 1. 23. DB 장애로 인한 EDA 기반 이벤트 보정처리 지난주 갑자기 모든 애플리케이션 서버들이 DB 서버와의 네트워크 연결을 실패했다. 전면장애인 상황이다. DB 에 문제가 생기면 내가 담당하는 주문서 서버는 어떤 문제가 발생하고 왜 보정처리가 필요한지 알아보자. // api 응답 에러 메세지 Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Cannot get a connection, pool error Timeout waiting for idle object 사용자가 주문서 화면에서 결제 버튼을 누르면 유효성 검사를 거쳐 결제가 진행되고 최종적으로 주문완료 작업을 수행한다. 만약 결제가 수행되기 전에 DB 문제가 생긴다면 사용자는 불편함을 겪.. 2023. 1. 15. 주문 동시성 이슈 정리 상황 설명 주문서 서버는 이벤트 기반으로 동작한다. 주문서를 만들고 결제 프로세스를 진행하면 '주문 완료 이벤트'를 발행한다. 그러면 해당 이벤트를 consume 해서 아래 그림 1번 작업이 수행된다. 문제는 1번 작업에서 API 를 호출해, 주문/결제 서버로 요청을 보냈는데 Read Timeout 에러가 발생했다. 2번 주문 완료 요청중 에러가 발생하면 주문 실패 이벤트가 발행되고, consumer 가 4번 작업을 수행하면서 새롭게 API 를 호출한다. 여기서 기존 2번 작업과 동시성 이슈가 발생하면서 실제로는 주문이 완료 처리 됐지만 완료 되지 않았다는 결과를 받게 된다. 그래서 주문서 서버는 주문이 이미 완료 됐는지 확인하는 방어로직이 있음에도 불구하고 롤백 프로세스가 진행됐다. 주문서 서버 입장에.. 2022. 11. 14. github action matrix strategy 활용 상황 설명 1. 우리 프로젝트는 PR 올리면 자동으로 테스트를 실행시키기 위해(CI 빌더로써) github action 을 활용한다. 2. 네이버망에 있는 서버와 API 통신을 할 때 Proxy 서버를 거쳐서 가도록 수정이 필요하다(보안 요구사항). WebClient 는 아래 코드와 같이 isSecurityProxyEnabled 가 true 인 경우(Proxy 서버를 거쳐가야 하는 경우), proxy 메서드를 통해 Proxy 서버 주소와 포트를 알려준다. @Value("${security-proxy.enabled:false}") private boolean isSecurityProxyEnabled; // true 이면, proxy서버를 거쳐야 한다 HttpClient httpClient = HttpCli.. 2022. 11. 13. 이전 1 2 3 다음