분류 전체보기

·test
GitHub - pbg0205/concertContribute to pbg0205/concert development by creating an account on GitHub.github.com   현재 사이드 프로젝트에서 로컬 환경에서 main 과 test 의 DB 환경을 독립적으로 구성하기 위해 test container 를 적용했다. Test Container 를 적용하며 경험했던 삽질 기록을 기록해보고자 한다. [1] test container 를 사용하는 이유실제 서비스와 동일한 환경 : Docker 를 사용해 DB, MQ, API 등 외부 시스템을 실제 운영 환경와 유사한 환경에서 테스트할 수 있는 장점이 있다.테스트 독립성 보장 : 각 테스트를 독립된 컨테이너에서 실행되므로 테스트 고립성을..
·redis
[1] RedisKey-Value 기반 NoSQL 인메모리 오픈소스이다.usecase : 캐싱, 세션 관리, MQ(pub/sub) 용도로 사용한다.장점속도 : 데이터를 메모리에 데이터를 저장하여 디스크 접근 속도보다 10^5배 더욱 빠르다.자료구조 : redis 데이터는 다양한 데이터 타입을 지원해 요구 사항에 맞는 데이터 타입을 사용할 수 있다. (대기열 : List, 실시간 순위표 : SortedSet)AOF(Append Only File) : 쓰기 연산에 대한 로그를 남겨 시스템 장애 또는 재시작 되었을 때 데이터 재구성을 돕는다.싱글 스레드 : 모든 자료구조는 atomic 하기 떄문에 race condition 을 피해 데이터 정합성을 보장하기 쉽다. [2] Redis 자료구조(1) string가..
수강 신청 미션 - layered architecture with clean architecture GitHub - pbg0205/lecture2024Contribute to pbg0205/lecture2024 development by creating an account on GitHub.github.com [1] 레이어드 아키텍처 with 클린 아키텍처(1) 클래스 의존성기존 레이어드 아키텍처는 단방향 참조 구조로 인해 데이터베이스(DB) 계층의 변경이 서비스 계층에 직접적인 영향을 미치며, 이는 개방-폐쇄 원칙(OCP)을 만족하지 못하는 한계가 있었다.  이를 개선하기 위해 클린 아키텍처의 기본 개념을 도입하여 비즈니스 로직으로 데이터 계층과 API 계층이 의존하도록 구조를 재설계했다. 기존의 Se..
·architecture
[1] 아키텍쳐 비교(1) 레이어드 아키텍처 (layered architecture)상위 계층 → 하위 계층 호출의 단방향 흐름을 유지한다.상위 계층에 필요한 기능을 하위 계층의 구현으로 전달한다.하위 계층의 변경이 상위 계층에 영향을 미친다. DB 계층이 변경되면 Service 계층이 변경될 수 있다.DIP ❌ , OCP ❌DIP :  단방향으로 의존하고 있으므로 DIP 는 만족하지 않는다.OCP : 직접 의존으로 하위 계층에 변경에 따라 상위 계층이 함께 변경될 수 있기 때문에 OCP 를 위반한다. (2) 헥사고날 아키텍처모든 의존 방향이 도메인으로 단방향성으로 흐르고 있는 구조이다.장점 : 비즈니스가 중심적으로 보호되고 변경에 견고하다.Adapter & Port 패턴 : 통해 데이터 계층과 API ..
TFD 미션 링크 GitHub - pbg0205/hhplus-tdd-java: hplus tdd 미션hplus tdd 미션. Contribute to pbg0205/hhplus-tdd-java development by creating an account on GitHub.github.com  [1] 왜 항해 플러스에 선택하게 되었는가? 여러 사람과 개발을 하며 가장 중요하다고 생각이 들었던 것은 설득의 중요성이었다. 내 코드를 설득하기 위한 명확한 이유와 근거도 필요하지만, 내 생각과 기준을 다른 사람에게 설득하는 연습을 하기 위해서 참여하게 되었다. [2] TDD 는 왜 필요할까? 그리고, TDD에서 중요한 것은?테스트는 마치 보증서이자 설명서와 같다. 테스트는 기능이 의도한 대로 동작함을 보장할 ..
[1] 동시성 이슈가 발생하는 원인(1) CPU 기계어 명령은 기본적으로 원자적 연산을 지원하지 않는다.프로그램은 프로그램 코드를 CPU 기계어 명령어로 변환하여 연산하는데, 이 때 CPU 기계어 명령은 기본적으로 원자적 연산을 지원하지 않는다.두 명령어 이상을 처리하는 경우 원자성을 보장하지 않으며 즉, 현재 수행 중인 명령어가 모두 실행되지 않은 상태로 인터럽트 될 수 있다.결론적으로 CPU 에서 원자성을 보장하지 않는 모든 연산 처리는 스레드 간 동시 접근에 의해 데이터 불일치가 발생할 수 있다.자바에서의 해결 방안 : Atomic 연산 객체  (2) CPU 처리 데이터는 실시간으로 메인 메모리에 데이터가 저장되지 않는다.가시성(visibility) 은 멀티 스레드 환경에서 공유 변수의 변경 내용이..
cooper25
'분류 전체보기' 카테고리의 글 목록 (3 Page)