분류 전체보기
-
[책] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2카테고리 없음 2023. 6. 20. 00:40
2. 개략적인 규모 추정 시스템 설계 시, 시스템 용량, 성능 요구사항을 개략적으로 추정하는 법에 대해 서술되었다. 2의 제곱수 데이터 볼륨의 단위 : 1바이트 = 8 비트로 구성,(최소 단위) / ASCII 문자 하나가 차지하는 크기는 1바이트 알아야 하는 응답지연 값 컴퓨터 연산들의 처리 속도를 짐작할 수 있는 값들 제시된 수치들을 통해, 다음과 같은 사실들을 알 수 있다. 메모리는 빠르지만, 디스크는 아직 느리다. 디스크 탐색은 가능한 한 피하라 단순한 압축 알고리즘은 빠르다 데이터를 인터넷으로 전송하기 전에 압축해라 데이터 센터는 여러 지역에 분산되어 있고, 센터들 간 데이터 송수신에는 시간이 걸린다. 가용성에 관계된 수치들 고가용성(high availability) : 시스템이 오랜 시간 동안 ..
-
[디자인 패턴][생성 패턴] - 빌더 패턴CS/디자인패턴 2023. 6. 19. 01:42
1. 빌더 패턴 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의한 클래스를 별도로 분리해, 서로 다른 표현이더라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴 사용하는 경우 생성하는 객체가 Optional한 속성을 많이 가질 때 => 원하는 속성만 설정 가능 생성하는 객체가 속성 값이 많을 때 => 체인 형식으로 설정/ 기본 값 사용 가능 구현 방법 Builder 클래스: 객체의 생성과 속성 설정을 위한 메서드를 정의 체인 형태로 메서드를 호출하여 객체의 속성을 설정 일반적으로 객체의 각 속성에 대한 설정 메서드를 제공 Director 클래스: 객체 생성의 순서와 절차를 관리 Director 클래스는 빌더 객체를 받아서 원하는 순서로 메서드를 호출하여 객체를 생성 객체 생성의 ..
-
[디자인 패턴][생성 패턴] - 프로토타입 패턴CS/디자인패턴 2023. 6. 13. 14:37
1. 프로토타입 패턴 객체를 생성하는데 비용이 많이 들고, 비슷한 객체가 이미 있을 때 사용되는 패턴 원본 객체를 새로운 객체에 복사하여 필요에 따라 수정하는 메커니즘을 제공하는 패턴 사용하는 경우 종류가 너무 많아 클래스로 정리할 수 없는 경우 => 소스파일을 줄일 수 있다 클래스로부터 인스턴스 생성이 어려운 경우 => 이미 한번 복잡한 과정을 거쳐 만들어진 인스턴스 활용 가능(과정 생략) 프레임워크와 생성하는 인스턴스를 분리하고 싶은 경우 => 등록된 인스턴스를 복사해서 생성하기 때문에, 프레임워크와 분리 구현 방법 Java의 경우, Java에서 제공하는 Clone 메소드와 Cloneable 인터페이스를 사용해 구현한다. 예제 Product 인터페이스 = Prototype Mananger 클래스 = ..
-
[Network] HTTP Protocol에 대하여CS/Network 2023. 6. 9. 19:45
아무렇지 않게 사용하던 HTTP 프로토콜에 대해 더 자세히 알아보고 사용하고 싶은 생각이 생겨, 글을 작성한다. HTTP 프로토콜이란 Hypertext Transfer Protocol의 약자로, 웹에서 클라이언트와 서버 간 통신을 위해 사용되는 통신 규약 HTTP는 웹 브라우저와 웹 서버 간의 데이터 전송 방식을 정의하고 있으며, 인터넷에서 가장 널리 사용되는 프로토콜 중 하나이고 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 작동 방식 HTTP 프로토콜은 요청(Request)과 응답(Response)으로 구성된다. 클라이언트는 HTTP 요청 메시지를 서버로 전송하고, 서버는 해당 요청에 대한 응답 메시지를 클라이언트에게 반환한다. 이러한 요청과 응답은 특정 규칙과 형식을 따르며, 다양한 ..
-
[책] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 1카테고리 없음 2023. 6. 8. 15:10
백엔드 개발을 공부하면서, 항상 대용량 트래픽/대규모 시스템에 대해 강조되는 것을 볼 수 있었는데, 이에 관해 자세히 정리된 책이 있어 읽고 정리한 글입니다. 1. 사용자 수에 따른 규모 확장성 단일 서버 단일 서버에서 사용자의 요청이 처리되는 과정 사용자는 도메인 이름을 이용하여 웹사이트에 접속, 이 때, 도메인이름을 DNS에 질의하여 IP 주소로 변환하는 과정 필요 DNS 조회 결과로 IP 주소 반환 해당 IP 주소로 HTTP 요청 반환 요청을 받은 웹 서버는 HTML 페이지/ JSON 형태의 응답 반환 웹 애플리케이션 : 비즈니스 로직, 데이터 저장 등을 처리하기 위해 서버 구현용 언어, 프레젠테이션 용으로는 클라이언트 구현 언어 사용 모바일 앱 : HTTP 프로토콜을 이용해, JSON 포맷으로 응..
-
[디자인 패턴][생성 패턴] - 싱글톤 패턴CS/디자인패턴 2023. 5. 20. 16:28
1. 싱글턴 패턴 생성 패턴 중 가장 많이 주목받는 패턴, 자원 공유를 위해 객체 생성 개수를 1개로 제한한다. 선언된 클래스를 객체로 생성하는 과정 = 인스턴스화 인스턴스화는 선언된 클래스를 기반으로 객체를 생성해 메모리에 할당한다. (new 키워드를 이용해 인스턴스화 진행) 이 때, 동일한 객체를 무제한으로 생성할 수 있다. 그러나, 이것이 단점이 될 수도 있다. 하나의 클래스에서 동일한 A,B 객체가 생성되었을 때, 두 개의 객체는 서로 다른 메모리에 생성된 다른 객체이다. 따라서, 객체가 동일하지 않으므로 별도의 C 객체가 접근했을 때 객체의 상태값을 공유하면 안된다. 1. 예시 응용 프로그램에서 전역 변수, 공용 장치 등은 하나의 객체만 필요한 경우가 많다. 예를 들어 여러 대의 프린터가 연결되..
-
[Spring Data JPA] - 연관 관계 매핑Java/Java Spring 2023. 5. 17. 13:49
Entity 설계에 대해서 공부하다 보니, 연관 관계 매핑이란 말을 심심치 않게 볼 수 있었다. 일대다, 다대일, 단방향, 양방향 등등 그렇다면 모두 다대다 양방향 매핑을 하면 안되는 걸까? 라는 생각으로 공부했던 내용을 정리한다. 연관 관계 매핑이란? 연관관계 매핑 : 객체의 참조와 테이블의 외래 키를 매핑하는 것 연관 관계 매핑 시 고려 요소 1. 방향(Direction) 단방향 / 양방향 객체는 참조용 필드를 가지고 있는 객체만, 연관된 객체를 조회할 수 있다. 두 객체가 서로 참조하는 관계 => 양방향 관계 한 객체에서 다른 객체만 참조하는 관계 => 단방향 객체 테이블의 경우, 외래 키 하나로 양쪽으로 조인이 가능 => 양방향 혹은 방향이 없다 라고 판단 가능 2. 다중성(Multiplicity..
-
[디자인 패턴][생성 패턴] - 팩토리/팩토리 메서드/추상 팩토리 패턴CS/디자인패턴 2023. 5. 16. 18:33
생성 패턴 : 객체를 만드는 절차를 추상화하는 패턴 => 객체 간 강력한 결합 관계를 느슨한 결합으로 변경하는 패턴 객체지향 프로그램을 실행하기 위해서는 클래스를 선언하고 객체를 생성해야 한다. 대표적으로 new 키워드를 통한 방법이 있다. 이 때, 작성 로직에서 직접 객체를 생성하고 관계를 설정하면 개체 간에 매우 강력한 결합 관계를 갖게 되는데, 이는 확장과 유지 보수를 어렵게 하는 원인이 된다. 생성 패턴의 종류 팩토리 패턴 싱글턴 패턴 팩토리 메서드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 이제 각각의 생성 패턴들에 대해서 자세히 알아보자! 1. 팩토리 패턴 생성 패턴 중에서 가장 기본이 되는 패턴, 클래스의 객체 생성 처리를 위임한다. 객체 생성을 위임할 수 있는 클래스를 정의 뒤의 팩..