전체 글
-
글또 8기 후기좋은글 2023. 7. 16. 21:36
벌써 마지막이라니.. 글또 8기가 시작한지 얼마 안된것 같은데 벌써 마지막이라니 6개월 기간이 한 기수인데 시간이 참 빠른것 같다. 글또 활동 돌아보기 지난 활동들을 돌아보니, 한 번은 제출을 하지 못했었고, 패스는 2번 다 사용하고, 제출은 총 8번 냈던 것으로 확인하였다. 전체적으로 글또 했던 것을 돌이켜보면, 한마디로 생각보다 열심히 하지 못하고, 마감만 지키게 되는 아쉬운 활동이었다. 글 적었던 걸 보면, 회사를 이직한지 얼마 되지 않긴 했지만 책이나 유튜브 등 다른 다른 사람이 했던 자료들을 공부만 하고, 실제 내 경험과 실패 사례들이 없어서 약간 형식적으로만 하기도 한 느낌이었다. 중간에 한번 성윤님이 글또를 할 때 기존 지식 정리만 하는 것보다 끝에는 자기 생각을 적는게 좋다고 했었는데, 시..
-
카프카 프로듀서(producer), 컨슈머(consumer) (2)Kafka 2023. 7. 2. 21:40
스프링 카프카 스프링 카프카는 카프카를 스프링 프레임워크에서 효과적으로 사용할 수 있도록 만들어진 라이브러리다. 기존 카프카 클라이언트 라이브러리를 래핑하여 만든 스프링 카프카 라이브러리는 카프카 클라이언트에서 사용하는 여러 가지 패턴을 미리 제공한다. 스프링 카프카 라이브러리를 사용하기 위해서 다음과 같이 build.gradle에 디펜던시를 추가한다. dependencies { implementation 'org.springframework.kafka:spring-kafka:2.5.10.RELEASE' implementation 'org.springframework.boot:spring-boot-starter:2.4.0' } 1. 스프링 카프카 프로듀서 스프링 카프카 프로듀서는 '카프카 템플릿'이라고 ..
-
DDD 도메인 주도 설계(Domain-Driven Design)란?아키텍처 2023. 6. 4. 22:41
1. 도메인 주도 설계란? 위키백과에 따르면, DDD (도메인 주도 설계)는 해당 도메인과 일치하도록 소프트웨어를 모델링하는 데 중점을 둔 소프트웨어 설계 접근 방식이다. 무슨 말인지 이해가 안가니 하나 하나 알아보도록 하자. 아래 내용들은 최범균 님의 '도메인 주도 개발 시작하기' 책을 참고한 내용들이 많음을 미리 일러둔다. 1.1 도메인이란? 책 구매시 온라인 서점을 통해 책 검색, 목차, 서평 확인, 구매 등 기능 사용을 한다. 여기서 얘기하는 온라인 서점은 소프트웨어로 해결하고자 하는 문제 영역, 도메인(domain)에 해당한다. 한 도메인은 다시 하위 도메인으로 나누는 것이 가능하다. 1.2 도메인 모델 도메인 모델은 특정 도메인을 개념적으로 표현한 것 1.3 도메인 모델 패턴 Presentat..
-
카프카 개요(1)Kafka 2023. 5. 21. 21:21
사내에서 기존 시스템 개선을 하기 위해 카프카를 도입하기로 했다. 먼저 카프카란 무엇인지 알아보자. Apache Kafka 카프카는 링크드인(LinkedIn) 에서 링크드인 서비스 내에서 발생하고 있는 이슈들을 해결하기 위해서 만들었다고 한다. 데이터 파이프라인 확장의 어려움, 이기종 간의 호환성, 고성능 기반의 실시간 데이터 처리의 어려움 등의 문제를 해결 하기 위해 2010년 개발된 카프카는 일년 뒤인 2011년 아파치(Apache) 오픈소스로 세상에 처음 공개가 되었다고 한다. 카프카는 메시지큐의 일종인데, 카프카를 쉽게 잘 설명하는 그림이 최범균님의 'kafka 조금 아는 척하기 1' 영상에서 나온 다음 그림이라고 생각한다. 출처: https://www.youtube.com/watch?v=0Ssx..
-
이직 하면서 노력했던 내용 정리좋은글 2023. 4. 23. 00:50
2023년 4월 초 쯤에 작은 서비스 회사에 합격했었고, SI 회사에서 서비스 회사로 가고 싶어서 1년 넘게 노력했던 사항들을 한번 돌아보면서 어떤 것들을 했는지 생각해보았다. 1. 개인목표 10번 쓰기 김승호 회장님의 '생각의 비밀'이라는 책에서 꿈을 현실로 만드는 방법이 '구체적인 목표를 100일 동안 100번 쓰는 것'이라고 하였다. 자세한 내용은 아래 블로그 글을 참조하기 바란다. https://blog.naver.com/PostView.naver?blogId=yana_stella&logNo=222334655089&categoryNo=101&parentCategoryNo=0 내가 쓴 문구는 다음 문구를 계속 썼다. '나는 내 실력을 키워 개발문화가 좋은 회사에서 훌륭한 동료들과 즐겁게 일을 한다...
-
@Transactional 에 대한 고찰Spring 2023. 3. 26. 21:43
스프링에서 트랜잭션 처리를 지원하는데 어노테이션 방식으로 @Transactional 을 선언하여 사용하는데, 여기서 얘기하는 트랜잭션 개념은 다른 글에서도 워낙 많은 편이니 생략하도록 하겠다. @Transactional 이란? 메서드나 클래스에 @Transactional 추가하게 되면 자동적으로 트랜잭션을 시작하고, 정상 여부에 따라 Commit 또는 Rollback 하게 된다. 위에서 얘기한 @Transactional 추가 위치에 따른 처리 차이에 대한 내용이다. 메서드에 추가한 경우: 해당 메서드만 트랜잭션 처리 클래스에 추가한 경우: 모든 메서드의 트랜잭션 처리 @Transactional 사용시 주의점 다음 내용은 최범균님의 '프로그래밍 초식 : 초심자가 저지르기 쉬운 DB 코딩 실수 3가지' 에서..
-
트랜잭션 격리 수준(Isolation level)데이터베이스 2023. 2. 26. 22:31
트랜잭션의 격리 수준(Isolation level)이란 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다. 트랜잭션의 격리 수준 은 다음과 같은 4가지가 있다. READ UNCOMMITTED(커밋 전 읽기) READ COMMITTED(커밋 후 읽기) REPEATABLE READ(반복 읽기) SERIALIZABLE(직렬화 가능) 1. READ UNCOMMITTED 각 트랜잭션에서의 변경 내용이 commit 이나 rollback 여부에 상관없이 다른 트랜잭션에서 보여지게 되는 수준으로써 거의 쓰지 않는 격리 수준이라고 볼 수 있다. 2. READ COMMITTED PostgreSQL 에서 기본으로 사용되고 있는 수..
-
JPA Hibernate ProxySpring 2022. 9. 13. 17:39
오늘도 열심히 사이드 프로젝트를 진행하던 중 동행모집 엔티티의 속한 멤버 중 요청 유저가 속해있는지 검사하는 걸 진행하던 중 의도와는 다르게 진행하는 걸 확인하게 된다. 동행모집 참가서 에서 불러온 Gathering 엔티티 안에 있는 GatheringMember 엔티티 데이터가 분명히 있는데도 불구하고 호출해서 확인해보면 의도와는 다르게 진행해서 디버그 모드로 해당 데이터들을 확인해보니 다음 스샷처럼 되어 있는걸 알 수 있었다. gathering 과 requestUser 모두 데이터는 있을텐데 내부 데이터들이 모두 다 null 로 되어 있다. 그리고, 해당 변수의 처음 정보를 보면 Gathering$HibernateProxy~~~~ User$HibernateProxy~~~~ 이렇게 되어 있는 것을 알 수..