본문 바로가기
반응형

Book24

대규모 서비스를 지탱하는 기술 - 규모 조정의 요소 규모 조정의 요소 여는 글 서비스의 흥행으로 이용량이 증가하게 되면 시스템의 확장이 필요해진다. 그렇다면 시스템의 확장을 위한 방법에는 어떤 것이 있을까? 스케일 업(scale-up) vs 스케일 아웃(scale-out) 스케일 업(scale-up) 스케일 업은 서버의 하드웨어 스펙을 올리는 것을 말합니다. 예를 들어, CPU 1 core, Memory 1 GB 인스턴스를 CPU 4 core, Memory 4 GB로 올리는 것을 말합니다. 스케일 업에는 두 가지 유의사항이 있습니다. 첫 번째는, 성능 향상에 들어가는 비용이 정비례 하지는 않는다는 점 입니다. 위 사진과 같이 16배의 성능 향상을 위해서는 기존 대비 비용이 30배 이상 들어갈 수 있습니다. 두 번째는 물리적인 한계점 입니다. 물리적으로 메.. 2022. 7. 29.
대규모 서비스를 지탱하는 기술 - (하드웨어 관점에서의) 메모리와 디스크 메모리와 디스크 컴퓨터 내 기억장치와 속도차 아래 그림을 보면 위로 갈 수록 비용 대비 속도가 빨라지는 반면 용량은 줄어들고 밑으로 갈 수록 속도는 느려지는 반면 용량은 늘어난다. SSD vs HDD 간 성능 차이는? 연속된 블록을 읽어들이는 순차 IO에서는 SSD가 HDD보다 약간 빠르거나 비슷한 정도이지만, 랜덤 IO일 때는 막대한 성능 차이를 보인다.(출처, Real MySQL 8장 인덱스) HDD의 데이터 탐색 방법 HDD 내에는 데이터가 기록된 플래터(원판)이 있고, 이 원판으로 부터 데이터를 읽어들이는 헤드 등으로 구성됩니다. HDD의 데이터 탐색은 물리적인 원판의 회전과 헤드의 움직임(헤드 자체의 이동과 플래터에 뗏다 붙였다 하는 행위)를 통해 이뤄집니다. 이렇듯 물리적인 장치임에도 전기적인.. 2022. 7. 27.
[Real MySQL 8.0] 3장.사용자 및 권한 사용자 및 식별 MySQL의 사용자는 다른 DBMS와는 조금 다르게 사용자의 계정 뿐만 아니라 사용자의 접속 지점 도 계정의 일부가 된다. 아이디와 아이피는 역따옴표(`)나 홑따옴표(')로 감싸서 표현된다 'jordy'@123.123.123.123`` 뒤에 아이피(도메인) 자리에는 % 특수문자가 들어올 수도 있는데 이는 접속 지점에 대해서 별도로 구분하지 않는다는 표시이다. 접속하는 아이디와 아이피 그리고 도메인에 따라 비밀번호는 다를 수 있으며 동일한 아이디가 있을 때 접속 지점이 좁을 수록 우선순위가 높다. `jordy`@`123.123.123.123` --password: 1234 `jordy`@`%` --password: 456 => 아이피가 123.123.123.123 컴퓨.. 2021. 10. 15.
[Effective Java] Item 7. 다 쓴 객체 참조를 해제하라 C, C++처럼 메모리를 직접 관리해야 하는 언어와 달리 자바는 가비지 컬렉터를 갖춘 언어이다. 하지만 그럼에도 불구하고 메모리 누수가 발생한다. 아래 코드가 대표적인 메모리 누수가 일어나는 클래스다. public class Stack { private Object[] elements ; private int size = 0; // ... public Object pop(){ if(size == 0 ){ throw new EmptyStackException(); } return elements[--size]; } // ... }Stack 이란 자료구조는 원래 pop을 하면서 해당 데이터가 내보내는데, 위 코드에서는 size 변수의 값을 1 내림으로써 pop한 데이터를 남긴다. public class St.. 2021. 10. 6.
[Effective Java] Item 6. 불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기보다는 객체하나를 재사용하는 편이 나을 때가 많다. 재사용은 빠르고 세련되다. 특히 불변 객체는 언제든 재사용할 수 있다. 불변 객체 객체 내부의 변수값을 변경할 수 없는 객체 아래 코드를 보자. String s = new String("jordy"); 이 문장을 실행될 때마다 String 인스턴스를 새로 만든다. 이를 대신하여 직접 문자열을 할당할 경우에 기존 메모리에 저장되어있던 데이터를 재사용이 할 수 있다. hashcode(객체가 저장된 메모리 주소) 메서드를 사용하여 아래와 같이 비교해보면 확인 가능하다. String jordy = "niniz"; String scappy = "niniz"; System.out.println(jordy.hashCode() == .. 2021. 10. 6.
[Effective Java] Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴(singleton)이란 인ㅅ흐턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 전형적인 예로 함수(아이템 24)와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수가 있다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트 하기 어려울 수 있다. 싱글턴을 만드는 방식은 보통 둘 중 하나다. 두 방식 모두 생성자는 private으로 감춰두고 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다. 아래 코드를 보자. public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {...}; public void le.. 2021. 10. 6.
[Effective Java] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리 메서드와 생성자에 똑같은 제약이 하나 있다. 그것은 바로 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 만약에, 식품 포장의 영양정보를 표현하는 클래스를 생각해보자. 영양정보는 1회 내용량, 총 n회 제공량, 1회 제공량당 칼로리 같은 필수 항목 몇 개와 총지방, 탄수화물, 나트륨 등 수많은 선택 항목으로 이뤄진다. 이때 대다수 값이 0 이다. 그래서, 값이 있는 항목에 한해 객체 생성시 넣을 수 있도록 생성자를 생성하려하면 파라미터가 끝도 없이 길어질 수 있고, 또한 파라미터에 넣는 값의 순서가 바뀌어도 오류가 나지 않아 어플리케이션이 비정상 적으로 작동될 수 있다. 더 큰 문제는 비정상 작동은 큰 문제가 된 이후에 발견 될 것이다. 결론적으로 생성자의 매개 변수 조합이 다양하고 매.. 2021. 10. 6.
[Effective Java] Item 1. 생성자 대신 정적 팩토리 메서드를 고려하라 Outline 클라이언트(API 사용자)가 클래스의 인스턴스를 얻는 정통적인 수단은 Public 생성자다. 그 밖에도 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. - Pros and Cons, 장점 & 단점 Pros 1. 이름을 가질수 있다. 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. ex 1. 생성자 & 정적 팩토리 메서드 비교 // 생성자 BigInteger(int, int, Random); // 정적 팩토리 메서드 // 참고: prime number: n.소수 BigInteger.probablePrime();전자 보다는 후자.. 2021. 10. 6.
[카프카, 데이터 플랫폼의 최강자] 6장. 카프카 운영 가이드 개요 이번 장에서는 알아볼 내용은 다음과 같습니다. 카프카 운영 환경에서 빈번하게 사용되는 명령어 클러스터 확장을 위해 필요한 주키퍼와 카프카 스케일 아웃 방법 JMX를 사용한 카프카 모니터링 방법 카프카를 GUI 도구로 관리할 수 있는 카프카 매니저 활용법 필수 카프카 명령어 기본적인 명령어는 ../kafka/bin 에서 확인할 수 있습니다. 토픽 설정 명령어들 # 특수문자 안에 넣을 값은 카프카 클러스터, 주키퍼 클러스터 환경과 운영 목적에 따라 # 유동적으로 정해주시면 됩니다. # 토픽 생성 명령어 ../kafka/bin/kafka-topics.sh \ --zookeeper **/\** --replication-factor **** --partitions ** \** --topic **** --cr.. 2021. 9. 29.
반응형