오늘 뭐했냐/개발에 대한 주저리 124

23.07.23 트랜젝션 (Transaction)

트랜잭션이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위 특징 첫 번째로, 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것 두 번째로, 일관성은 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것 세 번째로, 독립성은 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점을 가리킨다. 네 번째로, 지속성은 트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영되어야 한다는 점 Isolation Level과 Lock Isolation level이 선택되면 해당 격리 수준에 따라 필요한 lock 동작과 전략이 결정. 다시 말해, Isolation level은 데이터의 일..

23.07.20 클라우드를 언제 사용하는가

클라우드 환경의 장점 필요한 만큼 자원을 유연하게 확장하여 사용할 수 있다. 분산 운영으로 가용성과 신뢰성이 높다. 고성능 하드웨어와 최신 기술의 클라우드 및 보안 기술이 적용된다. 인프라를 직접 구축하는 것보다 경제적이다. 개발과 배포가 빨라지고 협업과 공유가 쉬워진다. 그렇다고 클라우드 환경이 무조건 좋은 건 아니니까 고려해야할 부분이 있다. 보안 및 개인정보 보호 데이터 이전 및 호환성 데이터 백업 및 복구 클라우드의 성능 및 확장성 관리 운영 및 공급자 의존 문제 클라우드 환경이 비교적 최근에 등장했고 자주 사용하게 되는데 이에 대한 장점과 고려해야할 부분에 대해서 알고 있어야겠다.

23.07.19 클라우드 환경

클라우드란, 광대한 네트워크를 통하여 접근할 수 있는 가상화된 서버와 서버에서 작동하는 프로그램과 데이터베이스를 제공하는 IT 환경을 말한다. 그런데 검색하다보면 클라우드 서비스와 컴퓨팅으로 나뉘어서 많이 나오는데 이것은 뭐가 다른 것인지 보니까 클라우드 컴퓨팅(Cloud Computing)이란, 클라우드를 이용하여 컴퓨팅 자원을 사용하는 기술적인 방법으로 말 그대로 컴퓨터의 역할을 가상의 컴퓨터가 대신 해주는 것이다. 이는 서버, 스토리지, 네트워크 등의 자원을 가상화하여 사용자에게 제공하며, 필요에 따라 이를 확장하거나 축소할 수 있다. 클라우드 서비스란 이런 클라우드 컴퓨팅을 일반적으로 IaaS(Infrastructure as a Service), PaaS(Platform as a Service) ..

23.07.18 데이터 스토리지

컴퓨터는 두 개의 저장소가 있다. 하나는 컴퓨터가 켜져 있는 동안만 작동이 되는 저장소(RAM)이고 다른 하나는 컴퓨터가 꺼져도 데이터가 남아있는 데이터 스토리지이다. 이것은 대표적인 것 중에 하나이고 저장 매체에 데이터를 저장하는 것과 데이터 저장 매체 자체를 데이터 스토리지라고 한다. 데이터 스토리지 유형 SDS : 소프트웨어 정의 스토리지, 추상화 관리 소프트웨어를 사용하여 데이터를 하드웨어로부터 분리한 다음 네트워크에 사용하기 위해 다시 포맷하고 구성하며, 비정형 데이터를 사용하는 컨테이너 및 마이크로서비스 워크로드에 적합하다. 유선 연결 스토리지 솔루션이 불가능하다는 단점이 있다. 클라우드 스토리지 : 권한이 있는 사용자가 인터넷으로 액세스할 수 있는 어딘가에 데이터를 보관하고 체계적으로 관리하..

23.07.16 CICD란

CICD란 CI와 CD를 묶어서 부르는 말이다. 그럼 CI는 뭐고 CD는 뭐냐하면 순서대로 지속적 통합과 지속적 배포이다. 회사에서 여러 사람들이 어떤 서비스에 대해서 기능을 개발하고 코드를 추가하고 다시 배포를 하는데 있어서 배포 중이었던 것을 중단하고 코드를 다시 추가하고 확인하고 다시 배포하면 서비스를 사용하는 사용자도 배포하는 회사도 손해가 크다. 기능을 한 번에 다 만들어서 추가하는 건 힘들고 조금씩 조금씩 만들어서 테스트하면 그 테스트 시간도 오래 걸린다. 그리고 배포에 있어서도 매번 승인을 받아야하며 배포하다가 다시 문제가 생길 경우에 시간이 지연되면 그만큼 또 손해를 더 보게 된다. 이런 문제들을 해결해주기 위해 CI/CD를 사용한다 CI로 통합 과정에서 생기는 문제를 미리 알려주기도 하고..

23.07.11 자료구조 힙(heap) 코드 분석

내가 지금 힙을 구현하려면 어떻게 해야하나 막막해서 다른 누군가가 구현한 힙 코드를 해석해봤다. class MinHeap { constructor() { this.heap = [ null ]; } 힙이 구현될 공간, 편의상 0번 인덱스는 비우고 1번부터 시작해서 순서 및 이후 인덱스 계산을 보기 편하게 해주었다. size() { return this.heap.length - 1; } 힙의 사이즈, 배열의 길이를 반환하면 되는데 0번은 비워둔 상태로 만들었기에 -1을 해준다. getMin() { return this.heap[1] ? this.heap[1] : null; } 힙 안에 가장 작은 값, 인덱스 0을 비워뒀기에 인덱스 1이 가장 작은 값이다. swap(a, b) { [ this.heap[a], ..

23.07.09 OSI 7계층 567계층

5계층 : 세션 계층, 응용 시스템간의 세션을 관리하며 송신자와 수신자간에 동기화 신호를 주고받음, 세션 복구도 지원 6계층 : 표현 계층, 데이터를 읽을 수 있는 형식으로 변환(인코딩, 디코딩, 암호화, 복호화 등) 7계층 : 응용 계층, 프로그램들이 해당 프로토콜을 통해 데이터를 전송 할 수 있게 해줌, HTTP가 여기에 속함 OSI 참조 모델 데이터 전송 송신 측 시스템 응용 계층에서 하위 계층으로 순차적으로 데이터 송신 수신 측 시스템 물리 계층에서 상위 계층으로 순차적으로 데이터 수신 물리 계층과 응용 계층을 제외한 나머지 계층에서는 데이터 시작 부분과 끝 부분에 헤더나 트레일러 형태로 정보추가 이 정도로 OSI는 마무리하고 다시 자료구조부터 더 이해하고 그나마 쉬운 구조는 직접 만들어봐야지

23.07.08 OSI 4계층 (TCP UDP)

4계층 : 전송 계층, 서비스를 구분하고 데이터의 전송 방식을 담당하는 계층 (TCP/UDP)이며 전송 단위인 세그먼트는 네트워크 프로토콜 스택에서 데이터를 전송하는 데 사용되는 분할 방법을 의미한다. TCP (Transmission Control Protocol) : IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜로, 인터넷 환경에서 기본으로 사용한다. 장점은 신뢰성을 보장한다는 것이지만 그만큼 느리다. UDP (User Datagram Protocol) : 인터넷에서 정보를 주고받을 때, 서로 주고받는 형식이 아닌 한쪽에서 일방적으로 보내는 방식의 통신 프로토콜이다. TCP와 반대로 신뢰성은 떨어지만 그 대신에 속도가 빠르다. TCP는 웹브라우징, 이메일, 온라인게임 등 전반적으로 많..

23.07.07 IP주소 MAC주소

2계층과 3계층 둘 다 데이터를 확인하는 역할이 있어서 왜 뭘 확인하는 것일까, 2계층에서 데이터를 확인하는 것은 MAC 주소이고 3계층에서는 IP주소인데 둘은 또 무슨 차이가 있을까, 패킷이랑 프레임은 뭐가 다를까 하는 의문이 생겨서 찾아봤다. MAP주소란 제품을 만들 때 받는 고유 식별자라고 한다. 각 장비마다 다른 주소를 가지고 이 주소가 사용자가 달라져도 기기 자체의 값이기에 바뀌지 않는다. 익숙하다 했는데 애플케어 서비스를 신청할 때 아이폰에 MAC주소를 입력하는 게 있었다. 그리고 애플케어는 사용자가 바껴도 유지된다는 걸 들은 적이 있었는데 이제야 이해가 된다. IP주소란 인터넷을 통해 데이터를 보내고 받을 때 사용되는 위치 주소로 MAC주소가 정적인 것과 달리 동적으로 바뀔 수도 있어 만약에..

23.07.06 OSI 7계층 1~3계층

1계층 : 물리 계층 -> 물리적인 연결과 전기 신호 변환 신호 그대로 전달만 잘하면 된다. 단순 전달 및 전기신호를 0과1로 이루어진 비트 단위 디지털 신호로 변환 2계층 : 데이터 링크 계층 -> 물리 주소 결정 주소를 확인해서 내껀지 아닌지 확인하고 그 다음 처리를 한다. 그리고 주소는 IP주소가 아니고 MAC주소 데이터를 프레임 단위로 쪼개고 전에 찾아본 연결 리스트와 유사하게 앞뒤에 순번을 달아서 다시 합칠 때 빠진 데이터가 있는지 확인한다. 재전송을 요청해서 빠진 데이터 복구를 제공하기도 하지만 에러 감지에 우선을 둔다. 3계층 : 네트워크 계층 -> 다른 네트워크와 통신하기 위한 IP주소 결정 IP 주소를 부여하고 도착지까지 최적의 경로를 찾아준다.(라우팅) 데이터를 확인하여 내꺼면 위 계층..