전체 글143 [레디스] 레디스 Master-Slave를 도커에 올려보자 이번 포스팅에서는 Master - Slave를 구성하고 도커에 올려보고 장애 시 어떤 로직이 발생하는지 알아보겠습니다. Sentinel Mode를 활용해 마스터 슬레이브를 감시하는 노드도 함께 만들어보겠습니다. docker compose를 활용하면 쉽게 노드를 구성할 수 있습니다. 구조는 Master 1, Slave 2, Sentinel 3개로 구성하겠습니다. 센티넬은 최소 3개 이상 홀수로 구성해야 합니다. docker-compose.yml version: '2' services: # master : bitnami/redis:6.2.6 redis-master: hostname: redis-master container_name: redis-master image: bitnami/redis:6.2.6 e.. 2022. 3. 17. [레디스] 레디스에 대해 알아보자 레디스란?? NoSQL으로 Key-Value 타입 저장소이다. 영속성을 지원하는 인메모리 데이터 저장소이다. 읽기 성능 증대를 위해 Replication 지원. 쓰기 성능 증대를 위한 샤딩을 지원. 문자열뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원. 1ms 이하 빠른 응답시간 지원한다. 파티셔닝 지원으로 스케일 아웃이 쉽다. 레디스와 멤캐시드와의 차이 멤캐시드 또한 메모리 객체 시스템 멤캐시드는 멀티쓰레드를 지원해 스케일업을 통해 많은 다중 작업 처리가 가능하지만 레디스는 싱글 스레드 기반이다. 멤캐시드는 문자열만 지원한다 그러나 레디스는 문자열뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원한다. 스냅샷을 지원해 장애 상황시 복구에 이용할 수 있다. Master-Slave.. 2022. 3. 17. [코틀린] redis cache 적용 시키기 설치법은 아래에 있어요 2022.02.03 - [맥북 M1] - 맥북으로 도커에 redis 설치하고 실행해보기 build.gradle에 추가 //redis 추가 implementation("org.springframework.boot:spring-boot-starter-data-redis") 메인 어플리케이션에 @EnableCaching을 추가해야 캐시를 쓸 수 있다. @SpringBootApplication @EnableJpaAuditing @EnableCaching class KotlinTestApplication fun main(args: Array) { runApplication(*args) } RedisConfig 추가 직렬화해서 저장할거기 때문에 StringRedisSeriablizer()을 .. 2022. 3. 11. [코틀린] 생성시간, 수정시간 Auditing으로 자동 적용하기 메인쪽에 @EnableJpaAuditing 추가 @SpringBootApplication @EnableJpaAuditing class KotlinTestApplication fun main(args: Array) { runApplication(*args) } BaseEntity 생성 직렬화가 필요할땐 @Serializable을 적용시켜야 한다. @MappedSuperclass가 꼭 필요 @MappedSuperclass @EntityListeners(AuditingEntityListener::class) abstract class BaseEntity( @CreatedDate var createdDate: LocalDateTime?=null, @LastModifiedDate var modifiedDate: .. 2022. 3. 11. [코틀린] QueryDSL 초기 설정법 build.gradle 설정은 이렇게 해주세요. 주석에 기본 설정이랑 추가 설정 QueryDsl정도만 보시면 될 거 같습니다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.5.10" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("jvm") version "1.5.32" kotlin("plugin.spring") version "1.5.32" //기본 설정 추가 kotlin("plugin.allopen") version "1.5.32" kotlin("kapt") version "1... 2022. 3. 11. [MSA] MSA란? Clound Native Architecture 확장 가능한 아키텍쳐 수평적 확장에 유연(스케일 아웃) 시스템의 부하 분산, 가용성 보장 서비스 단위 패키지(컨테이너 기반 패키지) 모니터링 탄력적 아키텍쳐 서비스 생성-통합-배포에 따른 환경 변화에 따른 대응 시간 단축 분할된 구조 Stateless 통신 프로토콜 서비스 변경 자동 감지 사용자 요청에 따른 동적 처리 장애 격리 특정 서비스에 오류가 발생해도 다른 서비스에 영향을 주지 않음 Cloud Native의 구성 요소는? CI/CD CI란: 지속적 통합 통합 서버, 소스 관리,빌드 도구, 테스트 도구 대표적인 CI 도구: 젠킨스, 트래비스 CD란: 지속적 배포 continuous depoloyment 실행되는 파일을 실행 환경에 자동 반영 카나리 배.. 2022. 3. 10. [코틀린] 인터페이스 사용법 인터페이스 선언 interface MyInterface{ fun bar() fun foo(){ // optional body } } 인터페이스 구현하기 : 뒤에 interface 명만 넣어주면 됩니다. class Child : MyInterface{ override fun foo(){ // body } } 인터페이스 상속 interface Named { val name: String } interface Person : Named { val firstName: String val lastName: String override val name: String get() = "$firstName $lastName" } data class Employee( // implementing 'name' is not .. 2022. 3. 9. [코틀린] 데이터 클래스 data class 기존 자바는 POJO라는 것이 코드를 많이 차지하고 있다. public class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } 코틀린은 데이터만을 다루는 클래스에 대해서 간편한 문법을 제공한다. data class Person(var name: String, var age: Int, var gender: String) 이렇게 선언만 해도 생성자, Getter,Setter, equals, hashcode,toString까지 알아서 생성한다. 그러나 Data class에는.. 2022. 3. 9. [코틀린] for문, while문, Iterator 사용법 For문 사용법 일반적인 자바에서 for문을 사용할 수 있다. val cakes = listOf("carrot", "cheese", "chocolate") for (cake in cakes) { // 1 println("Yummy, it's a $cake cake!") } for(i in 0..3) { // 1 print(i) } print(" ") for(i in 0 until 3) { // 2 print(i) } print(" ") for(i in 2..8 step 2) { // 3 print(i) } print(" ") for (i in 3 downTo 0) { // 4 print(i) } print(" ") 결과 값 until은 b) a else b // 1 println(max(99, -42)) 2022. 3. 9. [코틀린] 코틀린 기초 함수 변수 선언법 Hello World!! fun main(args: Array) { println("Hello, world!!!") } 함수 선언 시: fun을 사용 자바와 달리 이름 뒤에 파라미터 타입 사용 함수를 정의할 수 있다. 배열 처리를 위한 문법은 없다. System.out.println 대신 println으로 간결해졌다. 줄 끝에 ;(세미 콜론)을 붙이지 않아도 된다. 함수를 만들어 보자 fun max(a: Int, b: Int): Int { return if (a > b) a else b } 더 간결하게 만들어 보자 fun max(a: Int, b: Int): Int = if (a > b) a else b 인텔리J 인텔리제이에선 반환 타입을 생략해도 된다. 코틀린이 정적 타입 지정 언어지만 컴파일러가 본문.. 2022. 3. 9. [코틀린] 코틀린이란 무엇일까? 코틀린이란 자바 플랫폼에서 돌아가는 프로그래밍 언어입니다. 자바와 완벽 호환되어 코틀린으로 많이 넘어간다고 해요. 맛보기 // 데이터 클래스 data class Person( val name: String, val age: Int? = null // 널이 될 수 있는 타입 지정, 디폴트 값 ) // 최상위 함수 fun main(args: Array) { val persons = listOf( Person("Alice"), Person("Bob", age = 29) // 이름 붙은 파라미터 ) val oldest = persons.maxBy { it.age ?: 0 } // 람다 식과 엘비스 연산자 println("The oldest is: $oldest") // 문자열 템플릿 } 코틀린의 특성 코틀린의 .. 2022. 3. 9. [코틀린] 맥북에 설치하고 스프링 Rest API로 CRUD 해보기 설치 우선적으로 코틀린 설치가 되어 있어야 합니다. 설치는 Homebrew를 이용합니다. //코틀린 설치 brew install kotlin //설치 확인 kotlinc -version 프로젝트 만들기 https://start.spring.io/ 에서 쉽게 만들 수 있어요. postgresql을 사용했지만 다른 mysql이나 mongoDB를 사용하셔도 무방합니다 yml 설정 spring: jpa: hibernate: ddl-auto: create-drop datasource: password: '{password}' username: {username} url: jdbc:postgresql://localhost:5432/{database name} driverClassName: org.postgresql.. 2022. 3. 8. 이전 1 ··· 3 4 5 6 7 8 9 ··· 12 다음