UID PID PPID C STIME TTY TIME CMDroot 81632 1 0 ... ? 00:00:04 /apps/apache/bin/httpd -k startdaemon 34436 81632 0 ... ? 00:00:00 /apps/apache/bin/httpd -k start ps -ef 출력은 보통 위와 같이 나온다. 각 항목을 정리하면 아래와 같다.UIDUser ID누가 실행했는가PIDProcess ID현재 프로세스 번호PPIDParent Process ID부모 프로세스 번호CCPU utilization최근 CPU 사용 정도를 나타내는 값STIMEStart Time프로세스가 시작된 시각/날짜TTYT..
들어가며결제 버튼을 빠르게 두 번 누르면 어떻게 될까?사용자가 두 번 눌렀다는 이유로 결제까지 두 번 처리되어서는 안 된다. 결제뿐만 아니라 주문 생성, 포인트 차감, 쿠폰 사용과 같이 한 번만 실행되어야 하는 기능에서중복 요청을 안전하게 처리할 수 있어야 한다. 1. 중복 요청은 왜 발생할까?중복 요청은 개발자나 사용자가 의도하지 않아도 발생할 수 있다.사용자가 버튼을 빠르게 두 번 클릭한 경우네트워크 타임아웃으로 클라이언트가 요청을 자동 재전송한 경우서버의 응답을 받지 못해 사용자가 다시 시도한 경우동일한 요청을 고의로 반복해서 호출한 경우따라서 “사용자가 한 번만 누를 것이다”라는 가정만으로 API를 설계해서는 안 된다. 2. 레이어별 중복 요청 방어 전략중복 요청은 하나의 계층에서만 막기보다 ..
들어가며트래픽이 폭주하여 서버가 느려졌다. 이 때, 캐시(Cache)와 메시지 큐(Queue) 중 어느 것을 도입해야하는가?진짜 문제를 해결하기 위해서는 '원인(병목)'을 먼저 찾아 그에 알맞게 선택해야한다.1. 캐시(Cache)느려진 원인이 반복적인 데이터 조회(Read) 때문일 때.데이터베이스(DB)까지 가지 않고 메모리에서 데이터를 즉시 반환(조회 속도 O(1))하여 서버와 DB의 연산 부담을 줄임.2. 메시지 큐(Queue)느려진 원인이 무거운 작업이나 쓰기/생성(Write) 요청 때문일 때.서버가 요청을 받자마자 메시지 큐에 던져두고 사용자에게는 "접수 완료" 응답을 바로 보냄.실제 무거운 처리는 백엔드에서 비동기(Asynchronous)로 차례차례로 처리한다. 3. 병목을 찾는 모니터링 도구"..
SchemaSchema는 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 구분하고 관리하는 이름 공간이다.그런데 Schema라는 용어는 MariaDB, PostgreSQL, Oracle에서 조금씩 다른 의미로 사용된다. 따라서 사용하던 DBMS가 변경되면 같은 Schema라는 표현 때문에 데이터베이스 구조를 혼동할 수 있다.DBMS별 구조를 간단히 정리하면 다음과 같다. MariaDBDB 서버 → Database(= Schema) → Table PostgreSQLDB 서버 → Database → Schema → TableOracleDB 서버·인스턴스 → PDB → User(≒ Schema) → Table