일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 토비의 스프링
- spring
- MSA
- jvm
- Kotlin
- gradle
- SpringBoot
- thread
- IntellJ
- list
- 토비의 스프링 정리
- Collection
- K8s
- 쿠버네티스
- 이스티오
- Java
- GC
- 스트림
- Stream
- OS
- 자바
- 자바 ORM 표준 JPA 프로그래밍
- 백준
- Real MySQL
- 스프링
- JPA
- mysql
- redis
- 보조스트림
- Stack
- Today
- Total
목록전체 글 (151)
인생을 코딩하다.
안녕하세요. 오늘은 정보 보안의 3요소인 CIA와 그에 따른 문제점에 관해 글을 작성해 보도록 하겠습니다. CIA란 무엇일까요? 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)의 첫 문자를 따서 조합한 용어로써 보안의 기본 항목이며 기밀 정보의보안 위험성을 측정하고 적절한 보안 정책을 수립하는 기준이 되는 보안의 기본 요소 입니다. 즉, 정보의 비밀을 유지하고(기밀성), 비인가된 변경으로 부터 정보를 보호하며(무결성), 필요할 때 언제든지 사용할 수 있도록(가용성) 하는 요건을 가지는 것을 공통적으로 제시하는 것 입니다. 언제 CIA가 위배 될까요? 1. A에서 B로 문서를 보낸다고 가정해보겠습니다. 이의 경우 중간에 있는 C가 문서를 탈취할 수도 있습..
안녕하세요. 오늘은 docker에서 k8s istio를 설치하는 것에 관해 글을 작성해보도록 하겠습니다. 배경 현재, 저는 스프링 클라우드(스프링 부트 + 넷플릭스 OSS) 적용에 사용되는 컴포넌트 중 하나인 Eureka를 사용하고 있습니다. 하지만, 스프링 클라우드(스프링 부트 + 넷플릭스 OSS)를 이용한 경우에는 스프링 클라우드로 각 서비스를 먼저 구축하고 마이크로서비스 애플리케이션 자체도 코드 내부에 스프링 클라우드 사용을 위한 클라이언트 코드가 탑재되어야 합니다. 또한 Eureka는 현재 deprecated되었기도 하구요. 하지만, eureka가 아닌, k8s Service mesh parttern 의 구현체인 Istio를 적용하는 경우에는 마이크로 서비스마다 함께 배포되는 사이드카 프락시에 운..
🔍 우선, 코틀린에서 Entity Class 생성자에 매개변수를 선언할 때, id를 맨 위에 선언했을 경우로 예를 들어보겠습니다. 생성자 호출시, 네임드 파라미터를 사용하지 않았을 때 @Entity class User( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0L, @Column(nullable = false) val email: String, @Column(nullable = false) val password: String, ) { fun user() = User("email@tistory.com", "password") } 위와 같은 코드는 파라미터 순서가 맞지 않기 때문에 컴파일 에러가 발생하게 됩니다. 위 문..
안녕하세요. 오늘은 2차 캐시에 관해 정리한 내용을 작성해 보도록 하겠습니다. 그리고 2차 캐시에 관해 글을 작성하기에 앞서 우선 캐시와 JPA의 1차 캐시에 관해 잠시 설명해 보도록 하겠습니다. 🔍 캐시란 무엇이고, 캐시는 왜 사용하는 걸까요? Cache는 간단히 말해서 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것입니다. 위로 갈수록 빠르고 비싸고 밑으로 갈수록 느리고 저렴한 저장소라고 생각하면 됩니다. Secondary Memory를 디스크 영역이라고 보시면 됩니다. 기본적으로 데이터는 컴퓨터가 꺼져도 저장이되어야 하기 떄문에 Secondary Memory(SSD,HDD 등)에 저장이 되는데, 기술이 발달하고 하드웨어들이 커지다보니깐 Main Memory나 Cache Memory, ..
안녕하세요. 오늘은 M1 Mac에서 docker 설치 후, mysql image를 설치하는 법에 관해 글을 작성해보도록 하겠습니다. Intel Mac을 사용하다가 최근에 m1 mac으로 갈아탄 뒤, docker로 mysql image를 설치하려 했더니 intel Mac과 명령어가 다르더라구요. 1. 도커 설치 https://docs.docker.com/docker-for-mac/apple-m1/ Redirecting… docs.docker.com https://www.lainyzine.com/ko/article/how-to-install-docker-for-m1-apple-silicon/ 위의 링크를 참고해보셔도 좋습니다. 2. 터미널에서 아래의 명령어를 입력해줍니다. m1에서는 arm64를 지원하지 않..
스레드 안전성이란 무엇일까요? 여러 스레드가 클래스에 접근할 때, 실행 환경이 해당 스레드들의 실행을 어떻게 스케줄하든 어디에 끼워 넣든, 호출하는 쪼에서 추가적인 동기화나 다른 조율 없이도 정확하게 동작하면 해당 클래스는 스레드 안전(Thread-Safe) 하다고 말할 수 있습니다. 간단히 말해서 여러 스레드가 클래스에 접근할 때 계속 정확하게 동작하면 해당 클레스는 스레드에 안전하다고 말할 수 있습니다. 특히, 멀티 스레드를 사용할때 스레드 안전성을 잘 고려하여 설계해야합니다. 객체 지향 프로그램에서 멀티 스레드를 잘 활용하면 훨신 좋은 성능의 프로그램을 설계할 수 있지만, 멀티 스레드를 활용할떄는 주의할 점이 있습니다. 여러 스레드가 변경할 수 있는 하나의 상태 변수를 적절한 동기화 없이 접근하면 ..
프로그램을 제대로 돌아가게 작성하는 일은 어렵습니다. 하지만 여러 작업을 동시에 실행하는 프로그램을 제대로 돌아가게하는 것은 더 어렵습니다. 다시 말해 여러 작업을 동시에 실행하는 작업은 순차적으로 실행하는 프로그램보다 오류 발생 가능성이 높습니다. 그럼에도 우리는 왜 작업을 동시에 실행하는 문제에 신경을 써야 할까요? 스레드는 자바 언에에서 피할 수 없는 특성이고 복잡한 비동기 코드를 더 단순한 순차적 코드로 바꿔 복잡한 시스템을 단순하게 개발하 수 있게 해주기 떄문입니다. 게다가 스레드는 멀티프로세서 시스템의 능력을 최대한 끌어낼 수 있는 가장 쉬운 방법입니다. 프로세서 개수가 늘어날수록 여러 작업을 동시에 실행하는 일은 더욱 중요합니다. 스레드는 각기 별도의 프로그램 카운터, 스택 , 지역 변수를 ..
쿠버네티스 서비스 메시 패턴의 구현체인 Istio란? 초창기 MSA 기술인 넷플릭스 OSS나 스프링 클라우드 기반의 서비스를 구축 및 운용할 때의 문제점은 API 게이트웨이, 서비스 레지스트리, 컨피그 서비스와 같이 운영 관리를 위한 여러 개의 기반 서비스를 별도로 각각 만들어야 한다는 번거러옴과 더불어 아래 그림과 같이 업무 처리 마이크로서비스에 스프링 클라우드 서비스를 사용하기 위한 라이브러리를 비즈니스 로직과 함께 탑재해야 한다는 점이였습니다. 또한 스프링 클라우드는 자바 기반이기 때문에 마이크로서비스가 자바 외의 다른 언어로 폴리글랏하게 구현된 경우에는 스프링 클라우드 서비스를 아예 사용할 수조차 없습니다. 그런데 최근에는 MSA 문제 영역 해결을 위한 기능(서비스 탐색, 서킷 브레이커, 추적, ..