전체 글 55

[트러블 슈팅] ECS 클러스터 안의 서비스간 네트워크 연결 불가

글을 시작하기 전에 짧게 배경을 설명합니다. 필자의 인프라 지식과 경험은 아래와 같습니다. - [On-premise] 서버 이중화 구성 & 운영 경험 O - [AWS] EC2 기반의 Elastic Beanstalk 구성 & 운영 경험 O - [AWS] ECS 운영 경험 O EKS X - [AWS] VPC, 보안그룹, 인바운드 규칙에 대한 이해 - Docker 에 대한 이해 - MSA 개발에 대한 이해 O MSA 인프라에 대한 이해 X - 그리고 이 정도로 거대한 규모의 인프라는 처음 만져봄 저는 9/1 일 신생 PG 회사로 이직하면서 모기업의 승인&정산 업무를 배정받았고, 이전 담당자는 퇴사가 예정되어 있었습니다. 이 글을 쓰는 시점에 이미 퇴사하신 승인/정산은 어느 회사에서나 가장 민감한 도메인 중 하..

Series/실전! 2022.09.24

요즘 애들은 문해력이 낮아진걸까?

09:42 ~ 13:00 소위 요즘 학생들이 단어를 모른다, 문해력이 떨어진다라고 말하고 이것이 큰 문제인 것으로 알려지고 있다. 하지만 사실은 영상 독해력이 높아지는 등 이전 세대와 다른 양상의 패러다임이 생기고 있는 것이다. 기술/업무와는 전혀 관계 없는 영상처럼 보이지만 느낀 것이 많습니다. 시대는 지속적으로 바뀌어 가고 우리가 만드는 서비스를 소비하는 층은 점점 어리고 새로워져 갑니다. 하지만 우리는 비즈니스를 하는 사람들이기에 너무나도 어렵지만 패러다임의 변화를 캐치할 수 있어야 하고, 최소한 변화를 인정하고 수용하는 자세를 가져야 된다고 생각합니다. 잘못된 분석의 사례 2차 대전 중, 미 해군분석센터 연구원들은 임무를 마치고 돌아온 전투기들의 총탄 자국에 대해 연구하였다. 그 연구 결과는, 비..

잡담 & ETC 2022.09.10

Repository 가볍게 관리하기

GitHub - Hyune-c/blogcode-repository-di: Repository 의존성을 가볍게 관리하기 Repository 의존성을 가볍게 관리하기. Contribute to Hyune-c/blogcode-repository-di development by creating an account on GitHub. github.com 작고 단순한 피쳐를 개발할 때는 크게 신경 쓰지 않던 것들이 공부하고 실무를 할수록 의문이 생기곤 합니다. 그중 하나인 Repository를 개발하면서 느낀 점을 기록해봅니다. 도메인 로직과 영속성 영역의 경계는 어디일까? 어떻게 하면 인적 실수를 줄이고 생산성을 높일 수 있을까? 지금의 회사에서 개발하는 애플리케이션은 B2B 성격이기에 그리드 형태의 조회 로직이..

Series/실전! 2022.08.01

토스 SLASH 22 를 보고..

토스 SLASH 22를 보고 관심 있는 주제인 Server/DevOps 위주로 정리했습니다. 소위 말하는 네카라쿠배의 컨퍼런스를 보면서 느끼는 것 중 하나는 대용량/동시성 처리를 위해서는 아키텍처와 생각의 패러다임 전환이 필요하고, 인프라의 재설계 및 운영 방법에 대한 고민도 필수적이라는 것입니다. 그리고 필연적으로 높은 운영 난이도가 요구되기에, 과도기의 회사에서는 어디까지를 트레이드 오프 해야 할지 항상 고민됩니다. 지속 성장 가능한 코드를 만들어가는 방법 패키지를 잘 관리함으로써 코드의 응집성을 높일 수 있습니다. import를 정리하는 것 또한 클린 코드의 영역입니다. 레이어 참조는 한 방향으로 이루어져야 하며, 레이어 역류와 레이어 건너뛰기는 금지됩니다. 멀티 모듈을 통해 레이어를 격리시킬 수 ..

Study 2022.07.11

INSERT INTO SELECT SHARED LOCK은 레코드 락으로 작동하는가? with MySql

회사에서 수기 작업 간 발생한 이슈를 해결하면서 회사 시니어님이 공유해주신 자료를 보고 이론으로 공부만 했던 것이 문득 궁금해져 테스트해 본 기록을 남깁니다. 환경 MySql 8.0 Datagrip Transaction Mode - Manual 테스트 1 목표 Table 단위의 LOCK이 걸리는가? 아니면 ROW 단위의 LOCK이 걸리는가? - 레코드 락 특정 ROW에만 SHARED LOCK이 걸리고, 다른 ROW의 CRUD에는 영향이 없는가? SHARED LOCK - 읽기 가능. 수정/삭제 불가 초기 세팅 create table test1 ( col1 int primary key auto_increment, col2 char(10) ); create table test2 select * from tes..

Study 2022.07.06

ErrorMessage를 관리하는 방법

GitHub - Hyune-c/blogcode-errormessage Contribute to Hyune-c/blogcode-errormessage development by creating an account on GitHub. github.com HTTP status code는 3자리의 코드와 설명으로 표현됩니다. 하지만 실무에서는 더 많고 다양한 종류의 에러 표현을 위해 name, code, reason을 활용하곤 합니다. 그리고 간결함과 생산성을 위해 프로젝트 내에서도 code와 reason이 직관적으로 연결되기를 기대합니다. STEP 1. Enum으로 관리하기 @Getter @RequiredArgsConstructor public enum Errorcode { NOT_EXIST_PRODUCT("..

레거시 코드 개선하기 with delegate pattern

GitHub - Hyune-c/blogcode-delegate Contribute to Hyune-c/blogcode-delegate development by creating an account on GitHub. github.com STEP 1. 개선 전 코드 https://github.com/Hyune-c/blogcode-delegate/commit/7ac445974e1fc497509813303d80151ce705ce1c AWS S3 조작을 담당하는 서비스로 개선 전 코드는 중복 코드와 확장성에 큰 단점을 가지고 있었습니다. 초기에는 연관된 로직이 적어 괜찮았지만, 그것을 감안하더라도 가독성과 확장에 취약한 코드였습니다. 그러던 중 S3 버킷 추가의 요건이 생겼습니다. STEP 2. 코드 개선 버킷..

Series/실전! 2022.06.05

for vs stream

이전에 공부했던 내용이지만 잘 설명해준 유튜브를 보고 내용을 정리해 봅니다. 기본 정보 for, foreach 구체적인 로직이 외부에 노출되는 외부 반복의 형태입니다. for문은 java 1, foreach문은 java 5부터 등장했습니다. foreach문은 컴파일 시 for문으로 변환됩니다. stream 구체적인 로직이 외부에 노출되지 않는 내부 반복의 형태입니다. 함수형 프로그래밍 패러다임이 도입된 java 8부터 등장했습니다. 차이 익숙함의 차이에서 오는 가독성의 호불호가 있습니다. 디버깅 난이도의 차이가 있습니다. for 에러 발생 위치가 바로 노출됩니다. stream 지연 연산을 통해 실행되기에 에러 발생 시 위치를 추적해야 합니다. 병렬 처리 구현의 차이가 있습니다. for 구체적인 로직을 나..

Study 2022.06.01