본문 바로가기

분류 전체보기

(644)
97일차 - 테라폼으로 AWS 다이나모 DB 생성하기 Post 테이블 생성 resource "aws_dynamodb_table" "dynamodb_table_post" { name = "post" billing_mode = "PROVISIONED" read_capacity = 5 write_capacity = 5 hash_key = "id" attribute { name = "id" type = "S" } } resource "aws_dynamodb_table" "dynamodb_table_chatMessage" { name = "chatMessage" billing_mode = "PROVISIONED" read_capacity = 5 write_capacity = 5 hash_key = "chatRoomId" range_key = "createDate" ..
96일차 - 다이나모DB 저장과 조회 devtools 의존성 제거 - 다이나모DB 라이브러리와 호환되지 않는다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' // developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'software.amazon.awssdk:dynamodb:2.2..
95일차 - 다이나모 DB 다이나모 DB - 몽고 DB 보다 더 단순하지만, 확장성과 안정성이 뛰어나다. - 서브 DB로 쓰기 좋다. - 급작스럽게 대량으로 발생하는 데이터를 저장하는 1차 저장소, 혹은 대량 데이터 저장소로 쓸 수 있다. - 데이터 유실 가능성이 0에 가깝다. 의존성 추가 - 기본 의존성은 Spring Devtools, Spring Web, Lombok을 추가했다. (Devtools는 호환성 문제로 제거됨. 다음 포스팅 참고) dependencies { ... implementation 'software.amazon.awssdk:dynamodb:2.20.98' implementation 'software.amazon.awssdk:dynamodb-enhanced:2.20.98' } application-secret..
94일차 - Hashicorp Vault Hashicorp Vault https://www.vaultproject.io/ Vault by HashiCorp Vault secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets in modern computing. www.vaultproject.io - 민감 정보의 저장, 관리 - 민감 정보에 접근하는 인증/권한 관리 - 데이터 암호화 - 오픈 소스 : https://github.com/hashicorp/vault GitHub - hashicorp/vault: A tool for secrets management, encryption as a service, an..
[이펙티브 자바 3/E] 아이템6 - 불필요한 객체 생성을 피하라 - 기존 객체를 재사용해야 한다면 새로운 객체를 만들지 마라. - 재사용은 빠르고 세련되다. 하지 말아야할 극단적인 예 String s = new Stirng("yuri"); 개선된 버전 String s = "yuri"; - 생성자 대신 정적 팩터리 메서드(아이템 1)를 제공하는 불변 클래스에서는 정적 팩터리 메서드를 사용해 불필요한 객체 생성을 피할 수 있다. - 불변 객체만이 아니라 가변 객체라 해도 사용 중에 변경되지 않을 것임을 안다면 재사용할 수 있다. - 박싱된 기본 타입보다는 기본 타입을 사용하고, 의도치 않은 오토박싱이 숨어들지 않도록 주의하자.
[이펙티브 자바 3/E] 아이템5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 의존 객체 주입 패턴 - 사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다. ===> 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식을 사용해야 한다. public class SpellChecker { private final Lexicon dictionary; public SpellChecker(Lexicon dictionary) { this.dictionary = Objects.requireNonNull(dictionary); } public boolean isValid(String word) { ... } public List suggestions(String typo) { ... } } - 의존 객체 주입 패턴은 자원이 몇 개든 의존 관..
93일차 - 테라폼과 AWS Route 53, DB 리플리케이션 Route 53 호스팅 영역 > 호스팅 영역 생성 > 도메인 이름 작성한 후 퍼블릭 호스팅 영역 선택, 호스팅 영역 생성 클릭 => 관리 준비 완료(관리 중인 것이 아님!) > 값/트래픽 라우팅 대상을 도메인의 네임 서버에 붙여넣기 EC2, RDS 인스턴스에 도메인 부여 variables.tf variable "domain_1_zone_id" { description = "domain_1_zone_id" default = "" # 호스팅 영역 ID } variable "domain_1" { description = "domain1" default = "" # 내 도메인 } main.tf # For EC2 Instance resource "aws_route53_record" "domain_1_ec2_1" ..
[OS/공룡책] Chapter 2. 운영체제 구조 - 시스템 서비스, 링커와 로더, 응용 프로그램이 운영체제마다 다른 이유, 운영체제 설계 및 구현 시스템 서비스 - 현대 시스템의 또 다른 면은 시스템 서비스의 집합체이다. - 시스템 서비스는, 시스템 유틸리티로도 알려진, 프로그램 개발과 실행을 위해 더 편리한 환경을 제공한다. => 파일 관리, 상태 정보, 파일 변경, 프로그래밍 언어 지원, 프로그램 적재와 수행, 통신, 백그라운드 서비스 - 운영체제 대부분은 시스템 프로그램과 함께 일반적인 문제점을 해결하거나 일반적인 연산을 수행하는 데 유용한 프로그램들도 제공한다. 링커와 로더 - 소스 파일은 임의의 물리 메모리 위치에 적재되도록 설계된 오브젝트 파일로 컴파일 된다. => 재배치 가능 오브젝트 파일 - 링커는 재배치 가능 오브젝트 파일을 하나의 이진 실행 파일로 결합한다. - 로더는 이진 실행 파일을 메모리에 적재하는 데 사용되며, CPU 코어..