![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/npKEd/btssT8v84dX/07DLkUFlfV1m8MHJym9J9k/img.png)
목차 글 목록 [Docker] 도커 설치와 web GUI 툴 Portainer로 Docker 연동하기 (1/3) [Docker] 도커에 MongoDB 설치 및 MongoDB GUI 툴 Mongo Compass로 접속하기 (2/3) [Docker] Spring Boot 프로젝트에 도커 컨테이너 연동과 Docker-compose 세팅 (3/3) 배경 사이드 프로젝트를 진행하던 중에 서버와 DB 환경을 구축할때 Docker를 활용해서 개발환경을 구축하였다. 도커를 비롯한 쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼 사용 경험을 쌓아두면 좋을 것 같기도 했고, 사이드 프로젝트를 진행하면서 최대한 실무에서 활용할 경험을 쌓아두기 위해 개발 & 운영 서버를 분리해서 구축하였고 이에 따른 개발환경 세팅에 많은 스..
목차 도서 정보 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 예스24 “페이스북의 뉴스 피드나 메신저, 유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까?”IT 경력자라도 느닷없이 대규모 시스템을 설계하려고 하면 막막하다고 느낄 수 있다. 특히나 www.yes24.com 배경 사실 이 책은 어떤 특별한 계기를 통해 읽었다기보다는, 책 내용이 괜찮다고 추천을 받아 한번 읽어보자는 가벼운 마음으로 읽기 시작하였다. 처음에는 가벼운 마음으로 읽기 시작했지만 책 내용이 생각보다 방대하면서 어렵기도 했고, 복잡한 사례들 위주로 소개를 해서 읽는데에 어려움을 겪었다. 하지만 주변에 이 책을 읽는 중이라고 얘기했을때 다들 좋은 책이라고 긍정적인 신호를 보냈을 뿐만 아니라, 사례들 자체는 (어렵지만..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/beYWke/btsrYUktyw0/SYpkrkkM7sqFHTqMKxHgYK/img.png)
목차 배경사이드 프로젝트를 진행하면서 테스트를 위해 개발해두었던 Mock API 서버를 실제 API 서버로 전환 작업 중에 API 명세를 작성해두면 추후에 관리하기 편할 것 같아서 전환 작업중에 함께 명세 작성 또한 진행하였다. API 명세는 잘 알려진 Swagger를 적용했는데, 생각보다 이 설정이 잘 안되었고 자잘한 이슈가 생겼다. 2022년 말에 릴리즈된 스프링부트 3버전 이상에서 Swagger를 사용할 경우 생길 수 있는 이슈라 챗 지피티한테 물어봐도 적절한 대답을 얻지 못하였고, 구글링을 해봐도 해결책을 쉽게 얻지 못해서 누군가가 이글을 보고 도움을 얻었으면 하는 마음으로 기록해둔다. 먼저 현재 내가 작업중인 프로젝트의 스프링 부트 버전은 3.1.0(3.X.X 버전 이상)이다. (글 후반에 나오..
목차 도서 정보 객체지향의 사실과 오해 - YES24 『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 www.yes24.com 배경 신입 개발자 또는 개발자를 준비하는 사람들에게 필독 도서라고 느껴질 정도로 워낙 유명하고 기초적인 도서임에도 불구하고 최근에서야 읽기 시작했다. 최근 회사에서 리팩토링 업무를 맡게 되었는데 객체지향의 특성을 살려서 해보는게 어떻냐는 의견을 받았고, 나도 기왕이면 OOP로 설계와 구현을 해보면 좋은 경험이 될 것 같다는 생각이 들어 업무 자체에 흥미도 생겼다. 물론 좋은 경험을 쌓고 업무에 대한 흥미가 생기는건 긍정적인 시그널이다. 하지만 나는 관..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/cjNxdO/btskhDE523m/eaKxjfQT2RvXIzKm4Bvaik/img.png)
목차 최근 평소 관심있는 기술들을 사용하면서 원하는 서비스를 개발하고 싶다는 생각에 사이드 프로젝트를 진행하는 인데, 화면 개발을 진행하면서 드디어 .. CORS 문제에 직면하였다. 웹 개발자치고는 비교적 늦게 경험한 편이라고 생각해서 한편으로 부끄럽기도하지만, 워낙 웹 개발을 처음 시작할때 흔하게 만나면서도 중요한 이슈라는 생각이 들어 개념도 익힐 겸 단순히 해결만 하는게 아니라 짚고 넘어가보았다. 배경 Fail Books top-rated API call: AxiosError {message: 'Network Error', name: 'AxiosError', code: 'ERR_NETWORK', config: {…}, request: XMLHttpRequest, …} index.js:1210 arg1..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/b4knnu/btr0HxQVHsz/C6J0WuWVbieE7uUz6izbeK/img.webp)
최근에 방화벽 해제와 관련하여 유관부서와 협엽할 일이 생겼다. 하지만 네트워크 관련 지식이 부족해서 커뮤니케이션하는데에 어려움을 겪었고, 문제를 해결하는데 더 많은 공수가 들었다. 서버 개발자로서 취업한 이상 네트워크 지식은 뗄래야 뗄수없는 분야일 것 같다. 단순 웹 클라이언트 통신 뿐만아니라, 대다수의 서비스가 MSA로 구성(혹은 전환)됨에따라 다른 서비스 및 api를 호출하는 경우도 많고, 데이터를 조회하고 저장하기위한 DB서버와의 통신 등... 서버를 개발하면서 만나게되는 개념들과 밀접한 연관을 갖고있기 때문이다. 이후에는 네트워크 관련 문제를 만나더라도, 빠르고 정확하게 해결할 수 있도록 과거에 몰라서 헤맸던 경험을 기록해두려고 한다. 공인 IP (Public IP) ISP(인터넷 서비스 공급자)..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bXcAkU/btrZlYp6qrK/NMHW50NMRbNB6aTLnAKBN0/img.jpg)
세미나 소개 - 구름에서 매달 진행하는 개발자를 위한 세미나 COMMIT - 구름 공식 블로그 (goorm blog) COMMIT은 COMMUNICATION과 IT의 합성어로 한 달에 한 번 수요일에 기술, 개발, 성장, 조직 문화 등에 관한 이야기를 나누려고 해요. blog.goorm.io 매번 메일로 알림을 받아서 관심있는 주제라면 들어보려고 노력하고 있다. 이번 회차 주제는 "성공적으로 신기술을 도입하는 법" 아래 내용은 세미나를 들어보면서 정리했던 내용이다. 누구나 관심있고 궁금할 수 있는 내용이라 블로그에도 올려두려고 한다(문제가 되면 지울 것) 신기술 도입 원칙 리스크보다 큰 이점이 있는가 리스크 : 신기술을 도입하고나면 (높은 확률로) 어떠한 트러블 슈팅이 발생 그럼에도 불구하고 도입을 할 ..
프로젝트 중 데이터 전송 건에 대해 누락이 있었고, 이를 확인하는 과정 중에 이해가 안가는 부분이 있어 파트 선배에게 질문을 했다. 선임 개발자분이 누락건과 그 이유를 분석하기 위해서 이력 테이블을 뒤져보고 pk를 조건 걸어서 조회해봤을때 매칭되는 로우가 없는 것을 보고 이력 테이블에 데이터가 누락되어있어서 전송이 안되었다고 하셨다. 이력 테이블에 해당 날짜를 조건으로 걸어서 조회했을때 데이터가 존재하지 않은것을 보고 누락되었다고 판단한 배경이 궁금해져서 질문을 했고, 선분이력 이라는 데이터를 관리하는 개념을 알게 되었다. 점이력(시점이력) 데이터의 변경이 발생한 시점에 대해서만 관리 선분이력 시점마다 달라지는 데이터를 관리하기 위한 개념 데이터의 변경이 적용된 시작 시점부터 그 상태의 종료시점까지 관리..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/cTnWw1/btrX4ZQhXUw/5E1f5pKjlK4Y5wCTR6GCT0/img.jpg)
목차 새해가 지난지 한달이 흐른 늦은시점이지만, 회고를 통해서 작년을 되돌아보려고 한다. 작년 한 해는 생활 패턴과 같은 일상의 작은 부분들을 비롯해서 삶의 방향, 방식 등 큰 부분까지 많은 변화가 생겼던 것 같다. 이런 변화들을 글을 통해서 되돌아보고 새로운 한 해를 다시 준비해보려고 한다. 취업 작년 중 가장 큰 사건이자 변화라고 한다면 취업일 것이다. 운이 좋게 취업 준비를 시작하자마자 바로 좋은 이미지를 갖던 기업에 입사를 하게 되었다. 취업 후 가장 변화된점을 뽑자면 삶의 방향성을 갖게 된 점이있다. 과거에는 단순한 목표이기만했던 개발자라는 직업이 이제는 밥벌이 수단이 되었고, 나를 표현하는 방식이 되었다. 이 직업을 갖고 만나는 사람들 속에서 나의 역할은 무엇이고 어떤 태도로 일을 하고 무엇을..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bIkzVS/btrHfmfQt9C/QGPlOdDmlEqgvjXviMfDBk/img.png)
Motivation 1. Kafka Connector 내용을 공부하면서 DB에 실제로 카프카 커넥터를 붙여서 실행하고 사용해면 좋은 경험이 되고 더 잘 기억에 남을 것 같았음 ✔ 아쉬웠던 점 👉 자주 사용하는 ORACLE로 연동해보면 더 좋을 것 같다고 생각해서 시도를 했으나 잘 안됐음, 관련 글을 찾아봤는데 ORACLE에 Connector를 연동한 사례가 별로 없었음(MySQL은 비교적 예시도 많았으나, 오라클은 유독 없음. 오라클에 적용할 수 없는 어떤 이유가 있는건가.. 의문..) 👉 m1맥이라 오라클 서버를 실행할 수 없어서 오라클 클라우드에서 제공하는 Autonomous DB를 사용하고 있었는데, 여기에 카프카 커넥터를 적용한 사례가 하나 있긴했으나 Docker를 이용한 방법(나는 카프카 서버..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/b2CRJP/btszHGAWxyc/3Y0OS1JZwZWoIIZLNjG0m1/img.png)
목차 배경 상용 서버는 대부분 linux 환경에서 구동되는데, 서버 개발과 운영 모니터링을 하다보면 서버의 로그를 확인해야하는 순간들이 생긴다. 이때 직접 서버에 접속하고 로그 파일을 탐색하며 어느시기(대게 몇시 몇분 몇초 단위로)에 어떤 요청을 받고 어떤 에러를 뱉었는지 분석해야하는 순간들이 종종 발생하는데, 그때 linux의 파일 내용 검색 명령어를 활용하면 파일 탐색시간을 축소할 수 있고 그만큼 빠른 시간내에 로그를 분석하여 에러를 확인할 수 있다. 대부분 서버는 linux 환경에서 구동되기 때문에 동작 방식과 관련 명령어들을 숙지해두면 서버 로그 파일 탐색과 모니터링 이외에도 서버 개발과 운영을 하는데 많은 도움이 될 것 같다. 이번에는 그 중 linux 환경에서 파일 탐색을 하는데 쓰이는 기본..
데드락(DeadlocK) 시스템 자원에 대한 요구가 뒤엉켜서, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다리며 무한 대기에 빠지는 상황 데드락 발생 조건 상호 배제 한 번에 하나의 프로세스만 자원을 사용할 수 있음 사용중인 자원을 다른 프로세스가 사용하려면 해제될때까지 기다려야 함 점유 대기 다른 프로세스에 할당된 자원을 점유하기위해 대기하는 프로세스가 존재해야함 비선점 이미 할당된 자원을 강제로 뺏을 수 없음 순환 대기 대기 프로세스의 집합이 순환 형태로 자원을 기다리고 있어야함 해결 방법 예방(Prevention) 데드락이 발생하지 않도록 예방 회피(Avoidance) 데드락 발생 가능성을 인정하면서 적절하게 회피 탐지 및 회복(Detection & Recovery) 데드락 ..