본문 바로가기

분류 전체보기93

JPA Java Instant.EPOCH <-> MYSQL timestamp insert 오류 JPA MYSQL timestamp Java Instant Instant.EPOCH는 UTC 1970-01-01 09:00:00 이다. Mysql TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC. 따라서 위처럼 세팅하고 insert 시도하면 예외가 발생한다. 1초를 더하던지, 다른방법을 사용해야한다! 2021. 7. 25.
Service Mash/ Istio / envoy Service Mash -> MSA에서 서비스간 통신에 프록시를 두고, 모니터링/컨트롤 가능 + circuit breaking Istio는 envoy 프록시를 사용한다 L7 로드밸런싱 지원 참고: https://phantasmicmeans.tistory.com/entry/Istio-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0 2021. 5. 19.
Blocking/NonBlocking, Synchronous/Asynchronous Blocking/NonBlocking, Synchronous/Asynchronous Caller - Callee 관점에서 간단 요약 Blocking/NonBlocking Callee 가 바로 return 되는지 여부에 따라 갈림 Callee 가 바로 return 되면, Caller 에게 제어권이 넘어가 다른일을 할 수 있게 된다. Blocking : 끝날때까지 바로 return X. Caller 는 대기. NonBlocking : 바로 return. Caller는 대기하지 않고 다른일 수행 Caller가 대기하며 CPU를 점유해놓고 쓰지않는 경우를 방지하려면 Non-Blocking 잘 쓰자. Synchronous/Asynchronous Callee 작업 완료 여부를 판단하는 주체에 따라 갈림 Asynch.. 2021. 5. 16.
코틀린- CPU 바운드, I/O 바운드 + 용어정리 CPU 바운드, I/O 바운드 CPU 바운드 CPU만 완료하면 되는 작업 중심 알고리즘 알고리즘 성능 → CPU 성능에 좌우 코드를 더 빠른 CPU에서 실행하면 코드 변경 없이 성능 향상 I/O 바운드 입출력 장치에 의존하는 알고리즘 실행시간 → 입출력 장치의 속도에 좌우 네트워킹이나 컴퓨터 주변기기로부터 입력받는 작업들도 포함됨 최적화가 외부시스템이나 장치에 의존 EX) 코드에 DB와 통신하는 부분이 포함될경우 통신, DB 성능에 따라 실행시간이 달라짐 CPU 바운드 알고리즘에서의 동시성과 병렬성 다중코어에서 병렬성을 활용하면 성능향상가능 : 단어 3000개 검사시 1000개당 스레드 1개 생성 및 실행 → 스레드 3개에서 계산 → 순차적 실행의 약 3분의 1로 단축 단일 코어에서 동시성을 구현하면 성.. 2021. 5. 16.
코루틴- 동시성 / 병렬 코루틴 동시성/ 병렬 동시성은 애플리케이션이 동시에 한개이상의 스레드에서 실행될때 발생 이 스레드간의 통신과 동기화가 되어야 애플리케이션이 정상동작 가능 동시성에 대해 올바른 동시성 코드 결정론적인 결과를 가짐 실행순서에는 약간의 가변성 허용 : 이를 위해 서로 다른 부분이 독립성이 있어야 하고 조정이 필요함 비동시성 코드 fun getProfile(id : Int) : Profile { val basicUserInfo = getUserInfo(id) val contactInfo = getContactInfo(id) return createProfile(basicUserInfo,contactInfo) } → 사용자정보 return 전까지 연락처정보 요청하지 않음 장점 정확한 실행순서를 알수있음 사이드 이.. 2021. 5. 16.
코루틴이란? - 프로세스/ 스레드/ 코루틴 프로세스, 스레드, 코루틴 애플리케이션 시작 → 운영체제가 프로세스 생성 → 여기에 스레드 연결 → 메인스레드 시작 프로세스 실행중인 애플리케이션의 인스턴스. 리소스를 여는 핸들, 프로세스 ID, 데이터, 네트워크 연결 등 상태를 가짐 위 상태에 내부 스레드가 액세스 가능 스레드 실행스레드 - 프로세스가 실행할 일련의 명령을 포함. 따라서 프로세스는 최소 1이상 스레드 포함 보통 애플리케이션의 main() 이 진입점 → 메인 스레드 메인 스레드 종료시 프로세스 종료 각 스레드는 속한 프로세스의 리소스 액세스 가능. 또한 자체 스레드 로컬 스토리지도 가짐. 스레드 안에서 명령은 하나씩 수행 및 block 됨. 따라서 ux에 부정적인 영향을 미치는 스레드는 block 하지말자. 블로킹작업을 별도의 전용 스레.. 2021. 5. 16.
SSL인증서 레벨 (DV OV EV) SSL인증서 레벨 (DV OV EV) SSL인증서는 인증기관(CA)의 심사 수준에 따라 DV, OV, EV 로 구분 등급 높은 순서 1. EV (Extended Validation) : 도메인, 조직 유효성 검사 + 추가 검증 (이번 마이데이터 사업에서 통신간에 EV 등급의 인증서 요구) 2. OV (Organization Validation) : 조직 유효성 심사 3. DV (Domain Vailidation) : 도메인 유효성 검사 한전인 : https://cert.crosscert.com/%EF%BB%BFssl%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%8B%AC%EC%82%AC-%EC%88%98%EC%A4%80%EC%97%90-%EB%94%B0%EB%A5%B8-%EB%A0%88%EB%.. 2021. 5. 16.
MDC(Mapped Diagnostic Context) MDC (Mapped Diagnostic Context) : 실행 쓰레드들에 공통값을 주입하여 의미있는 정보를 추가해 로깅 할수있도록 제공한다. Logging 을 남길때, 멀티쓰레드 환경에서 실행되는 task는 로그가 섞여 제대로 확인하기 힘들다. 실행되는 쓰레드마다 TheadLocal 변수에 Id값을 할당하여 실행흐름을 트래킹할 수 있다. 하지만 매번 쓰레드마다 위값을 주입해서 호출하는 것은 번거롭운데, MDC는 위 구현의 번거로움을 해소하고 Id 뿐만아니라 풍부한 값으로 로깅할수있도록 제공한다. slf4j,logback,log4j2 등 로거에서 MDC를 제공한다. mdc.put() mdc.remove() 등을 활용하여 세팅된 값을 활용할 수 있다. 2021. 5. 16.
[보안] MTLS 란? (Mutual TLS Authentication) TLS란? - Transport Layer Security (전송계층보안) SSL 및 TLS는 네트워크를 통해 작동하는 서버, 시스템 및 응용프로그램간에 인증 및 데이터 암호화를 제공하는 암호화 프로토콜입니다. (예시. 웹 브라우저가 웹 서버에 대한 보안 연결을 생성하는 프로토콜) 여기서, 갑자기 SSL이 등장한 이유는 SSL이 TLS의 이전 프로토콜이기 때문입니다. (SSL -> TLS) TLS는 SSL 3.0 기반으로 만들어졌으나, 서로 호환되지 않습니다. SSL은 현재 프로토콜 사용이 폐기되었고, TLS를 사용해야 합니다. en.wikipedia.org/wiki/Transport_Layer_Security - wikipedia X.509 인증서? TLS의 핵심은 PKI (공개 키 인프라)와 특히 X.. 2021. 3. 7.