본문 바로가기

전체 글

(198)
[강의] Terraform(테라폼) 개념 Overview IaC(Infrastructure as Code) 도구를 사용하면 GUI가 아닌 구성 파일을 사용하여 인프라를 관리할 수 있습니다. IaC를 사용하면 버전을 지정하고, 재사용하고, 공유할 수 있는 리소스 구성을 정의하여 안전하고 일관되며 반복 가능한 방식으로 인프라를 구축, 변경 및 관리할 수 있다. Terraform은 코드 도구로서의 HashiCorp의 인프라이다. 이를 통해 사람이 읽을 수 있는 선언적 구성 파일에서 리소스와 인프라를 정의하고 인프라의 수명 주기를 관리할 수 있습니다. Terraform을 사용하면 인프라를 수동으로 관리하는 것보다 몇 가지 이점이 있다. Terraform은 여러 클라우드 플랫폼에서 인프라를 관리할 수 있다. 사람이 읽을 수 있는 구성 언어를 사용하면 인..
gRPC GRPC Introduction gRPC는 인터페이스 정의 언어(Interface Definition Language: IDL) 및 기본 메시지 교환 형식으로 프로토콜 버퍼(protocol buffer)를 사용한다. Overview gRPC에서는, 다른 장치에 있는 Server Application을, 마치 같은 환경에 있는 object처럼 Client가 직접적으로 호출할 수 있도록 해준다. 이는 분산 환경 App나 Service를 좀더 쉽게 생성할 수 있도록 도와준다. 많은 RPC 시스템처럼, gRPC는 parameters와 return type을 사용하여 원격으로 호출할 수 있는 메서드를 지정하여 서비스를 정의한다는 아이디어를 기반으로 한다. 서버 측에서, 인터페이스를 구현하고 gRPC 서버를 실행하..
[사내세미나] Container를 활용해 멱등성있는 테스트 환경 구축하기 목차 Container를 활용하기 전 테스트 TestContainer를 통한 테스트 TestContainer란 TestContainer 기본 사용법 Postgresql Container ElasticSearch Container TestContainer를 활용하여 실제 개발환경에 적용하기 기능 추상화 코드로 녹이기 멱등성있는 테스트 개발환경 Container를 활용하기 전 테스트 - 직접 DEV 환경의 서버를 호출 - 멱등성 을 지키지 못한 잘못된 방식의 테스트 멱등선이란? 연산을 여러번 적용하더라도 결과가 바뀌지 않는 성질을 뜻한다. 즉, 여러번 함수를 실행하더라도 늘 같은 결과가 나와야 한다는 의미입니다. TestContainer를 통한 테스트 TestContainer란? Junit 테스트를 지원하는..
[강의] 한달한권|이펙티브 자바 자바를 처음 배웠을 때, 자바 개발자라면 꼭 읽어야 하는 책이라고 해서 읽었던 '이펙티브 자바' 당시에 읽으면서 많이 어려웠고, 와닿지 않아서 좀 더 자바를 사용하고 다시 읽어 봐야겠다고 생각했던 책이서 다시 읽게 되었다. 확실히 처음 읽었을 때 와는 다르게 느껴지는 책이였다. 혹시 놓치는 부분 혹은 잘못 이해하는 부분이 있을까? 강의도 같이 수강하면서 완독~ 북리더인 김두현 개발자가 경험을 바탕으로 설명해주는 강의 스타일도 만족스러웠다. 자바를 배운 지 얼마 안된 개발자라면 강의를 보면서 책을 읽어도 좋을 거 같다
[SPRING] Transaction과 EventLister_트랜잭션 기본 개념 이벤트기반 API를 만들면서 겪어던 Transaction 이슈/ EventLister & TransasctionalEventLister 사용 등 생각 정리 차원에서 글정리, 스프링 트랜잭션의 내용은 `스프링5 레시피' 책의 내용을 참조 스프링 트랜잭션 관리 트랜잭션 관리는 엔터프라이즈 애플리케이션에서 데이터 무결성과 일관성을 보장하는 데 필수 기법이다. 스프링에서도 프로그램 방식의 트랜잭션 관리 및 선언전 트랜잭션 관리 기능을 지원한다. 트랜잭션이란 쉽게 말해 연속된 여러 액션을 한 단위의 작업으로 뭉뚱그린 것. 트랜잭션의 속성은 ACID(원자성, 일관성, 격리성, 지속성)로 설명할 수 있다. 원자성(Automicity) : 트랜잭션은 연속적인 액션들로 이루어진 원자성 작업이다. 트랜잭션의 액션은..
[JPA] 성능 최적화하기_N+1 문제 회사에서 맡은 서비스맵을 성능적인 측면에서 개선할 수 있는 포인트들을 찾아 기록하기 N+1 문제 개선하기 하이버네이트의 연관관계를 사용할 때, 고려해야 할 가장 기본적인 요인이라고 생각한다. 즉시 로딩과 N+1 Member 엔티티와 Order 엔티티의 관계가 1:N, N:1 양방향 연관관계라고 가정하자. 이런한 상황에 특정 회원 하나를 em.find() 메소드를 조회하면 즉시 로딩으로 설정한 주문(Order) 정보도 함께 조회된다. SELECT M.*, O.* FROM MEMBER M OUTER JOIN ORDERS O ON M.ID=O.MEMBER_ID여기까지만 보면 즉시 로딩이 상당이 좋아보이지만, 문제는 JPQL을 사용할 때 발생한다. 다음 코드를 보면, List
[ElasticSearch] 비슷한 옵션 간의 차이와 적절하게 사용하기 "기초부터 다지는 ElasticSearch 운영 노하우" 책을 보면서 개발 시, 알아두어야 할 내용 정리 From/Size vs Scroll From/Size vs Scroll From/Size 해당 옵션으로 pagination을 구현하면 pagination 도중에 문서가 추가로 인입되고 해당 문서가 검색에 포함될 경우, pagination 결과가 달라 질 수 있다. Scroll 중간에 문서가 인입되어 검색 결과가 달라진다고 해도 scroll_id가 유지되고 있는 동안에는 pagination에 포함되지 않기 때문에, pagination 결과가 달라지지 않는다 Scroll_id의 유지 기간은 노드의 힙 메모리에 영향을 주기 때문에 지나치게 설정하면 OOME 발생 검색 결과가 동일하게 유지되어야 하는 pag..
[강의] The RED : 백발의 개발자를 꿈꾸며 : 코드리뷰, 레거시와 TDD by 백명석, 최범균 최범균님이 쓰신 책들은 찾아서 보는 편이었는데, 그러던 중 발견한 최범균님의 강의 사실 이때가지는 '백명석'님은 잘 몰랐지만 해당 강의를 수강하고 멋진 개발자임을 느꼈고 팬이 되었다!! 어떤 내용을 다루는 강의였는지 기억하기 위해, 가벼운 내용만 정리 성장 왜 성장해야 할까? 내가 제어할 수 있는 거에 집중이 필요 열심히는 누구나 한다. 잘 성장하는 것이 필요 받은 만큼 일한다 vs 받고 싶은 만큼 일한다. 7할의 불합리가 세상을 지배하지만 3할의 이치도 틀림없이 행해지고 있다! 성장하는 방법 롤모델 + 주변에 내가 되고 싶은 개발자를 찾아라 + 그가 왜 잘하는지를 탐구하고 어떻게 하면 그와 같이 될 수 있을지를 파악하고 노력하라 + 무조건 실력자의 바지를 붙자고 늘어져서 하나라도 더 배워..