트랜잭션의 정의
- 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
트랜잭션의 성질
1. 원자성
- 한 트랜잭션 내에서 실행한 작업들은 하나로 간주
2. 일관성
- 일관성 있는 DB 상태를 유지
3. 격리성
- 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않도록 격리
4. 지속성
- 트랜잭션을 성공적으로 마치면 항상 결과가 저장될 것
스프링 트랜잭션
- @Transactional 메서드가 포함되면, 정상 여부에 따라 Commit, Rollback 함
Public Cloud
- Cloud란 인터넷을 은유적으로 표현
- Cloud Computing: 서버/DB/NW 등 컴퓨팅 리소스를 인터넷 통해 관리
- 서비스...
- 파일/DB 등 저장소의 데이터를
- 서버에서 원하는 형태로 가공해
- NW를 통해 사용자에게 전달하는 것
- 기존에는 이걸 다 우리가 관리한다? -> 굳이?
- 개인 PC에서 서비스 하기
- 백업? 보안?
- 맨날 켜둬? 다른 프로그램 쓰면? 망가지면?
- 외부에서 접근 방법은? 몇명이나 쓸 수 있지?
- 사무실 서버로 서비스 하기
- 다른 팀과 데이터/배포본/파일 공유는? 디스크 망가지면?
- 장비관리, OS 설치는? 서버 전원 나가면? 에어컨 둬야겠지? 유휴장비는?
- 사무실 서버 공격받으면? 네트워크 장비 관리는?
- 데이터 센터로 서비스
- 이중화 구성? 장기 백업?
- Rack 관리?
- 여러대의 서버 관리 틀
- 배포 구성?
- DDoS? 보안 구성?
- 관심사의 분리
- 서비스 제공자는 "서비스의 구성" 이 Core Value
- 어떤 대상에게 서비스 할 것인가?
- 웹/앱/API
- 인증/인가
- 사용자가 원하는 것은 무엇인가?
- 조회 조건
- 데이터의 형태 (JSON, XML)
- 데이터의 주기
- 데이터 정합성, 무결성 등
리눅스 명령어
- curl wgetip.com
- 해당 인스턴스의 ID
- "->" 심볼릭 링크 == 참조 == 바로가기
- /etc/ 에서 여러가지 설정들이 가능
- ifconfig
- eth0
- 랜카드가 리눅스에 장착되었을 때 인식
- MAC 주소
- 무선 LAN 카드 또는 무선 LAN 기능 내장 기기에 개별적으로 부여되는 16진수 12자리의 단말 식별 번호
- /var/log
- 애플리케이션 동작시 syslog에 많이 쌓임
- ps -ef | grep daemon
- grep: 텍스트 검색
- ps: 현재 사용중인 프로세스
- pstree -p
- systemd(1)
- pid 값 fork 받아서 자식 프로세스들
- 하나의 프로그램을 실행시키는 pid를 할당받아 메모리에서 동작하는 중
- /proc
- 프로세스 정보
- nslookup
- DNS를 IP주소로 알아보기
리눅스 질문
- 명령어를 친다는 것?
- 경로에 있는 프로그램을 실행한다는 것
- Shell이란?
- OS와 관련된 시스템 프로그램
- 쉘은 커널과 사용자간의 다리역할
- 사용자 입장에서 OS와 소통할 수 있는 마지막 프로그램
- 환경변수란?
- 참고: https://blog.naver.com/PostView.nhn?blogId=zxwnstn&logNo=221521038431&proxyReferer=https:%2F%2Fwww.google.com%2F
- 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
- OS에서 자식 프로세스 생성 시, 참조하는 변수들
- path: OS가 어떤 프로세스 실행시킬 때, 그 경로를 찾는데 이용됨
- window에서 path 변수를 등록해주면 전역에서 해당 디렉토리의 하위 파일 실행가능
- rsa?
- 공개키 암호화 알고리즘
- RSA-2048 암호화 -> 인터넷 뱅킹
- Public Key와 Private Key가 쌍을 이루며, Private Key로 암호화 한 내용은 Public Key로만 해독 가능
- 엄청 큰 숫자는 소인수분해하기가 어렵다는 성질을 사용
- daemon?
- 참고: https://blogger.pe.kr/770
- OS에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램
- syslogd 에서 마지막에 "d" 붙은 친구가 데몬
- inetd, httpd, nfsd, sshd, named, lpd
- 일반적으로 프로세스로 실행됨
- 대개 부모 프로세스를 갖지 않음 (PPID가 1)
- 포그라운드 프로세스
- 사용자와의 대화창구인 표준IO(터미널, 키보드 등)로 대화
- 백그라운드 프로세스
- 입력 장치에 대해 터미널과의 관계를 끊은 모든 프로세스
- 사용자에게 키보드를 통해 전달받지 않고 스스로 동작하는 프로세스
- sshd
- 이게 bash를 실행시키고 뒤로 물러나있음
- "&"을 붙이면 명령어 백그라운드로 실행됨
- 데몬 프로세스
- 백그라운드 프로세스 중에서 부모 프로세스가 1 혹은 다른 데몬 프로세스인 프로세스
- 가령 vi & 를 통해 vi를 백그라운드로 실행해보자
- 그럼 vi & 는 ppid로 bash를 갖는다
- bash를 kill, 그니까 exit을 하면,
- pid bash가 죽고, 자식 프로세스도 같이 죽음 (고아?)
- 따라서 백그라운드 프로세스가 부모 프로세스로 1 혹은 다른 데몬 프로세스를 가지자
- "웹 서버"가 대표적인 데몬 프로세스
- PPID가 1인 httpd 프로세스와 PPID가 1인 프로세스를 PPID로 갖는 httpd 프로세스 생성
- PPID가 1인 프로세스는 바로 root에 접근가능해서 위험
- DNS Cache?
- DNS Cache란 임시적인 저장소로써, OS나 웹브라우저에서 전에 찾아봤던 DNS를 기록해 둔다
통신이란?
- OSI 7 Layer?
- 프로토콜은 010101 짤라서 쓰는 거
- 그냥 외우세요!
통신과정을 확인할 때
- Ping Check
- IP만으로 서버에 요청이 가능한지 검증
- ICMP 프로토콜 사용
- 네트워크 에러에 대처 담당하는 프로토콜
- traceroute로는 RTT을 알려줌
- RTT: 패킷 하나가 왕복한 시간
- 병목 발견 가능
- Port Check
- 서비스의 정상 구동 여부 확인 가능
- telnet IP Port
- 어플리케이션 띄우면 소켓이 생성됨
- 파일 디스크립터
- 어플리케이션에 연결된 포트로 stream으로 데이터 전송
- Http Check
- curl을 통한 HTTP 응답 확인