목차 최근 평소 관심있는 기술들을 사용하면서 원하는 서비스를 개발하고 싶다는 생각에 사이드 프로젝트를 진행하는 인데, 화면 개발을 진행하면서 드디어 .. CORS 문제에 직면하였다. 웹 개발자치고는 비교적 늦게 경험한 편이라고 생각해서 한편으로 부끄럽기도하지만, 워낙 웹 개발을 처음 시작할때 흔하게 만나면서도 중요한 이슈라는 생각이 들어 개념도 익힐 겸 단순히 해결만 하는게 아니라 짚고 넘어가보았다. 배경 Fail Books top-rated API call: AxiosError {message: 'Network Error', name: 'AxiosError', code: 'ERR_NETWORK', config: {…}, request: XMLHttpRequest, …} index.js:1210 arg1..
최근에 방화벽 해제와 관련하여 유관부서와 협엽할 일이 생겼다. 하지만 네트워크 관련 지식이 부족해서 커뮤니케이션하는데에 어려움을 겪었고, 문제를 해결하는데 더 많은 공수가 들었다. 서버 개발자로서 취업한 이상 네트워크 지식은 뗄래야 뗄수없는 분야일 것 같다. 단순 웹 클라이언트 통신 뿐만아니라, 대다수의 서비스가 MSA로 구성(혹은 전환)됨에따라 다른 서비스 및 api를 호출하는 경우도 많고, 데이터를 조회하고 저장하기위한 DB서버와의 통신 등... 서버를 개발하면서 만나게되는 개념들과 밀접한 연관을 갖고있기 때문이다. 이후에는 네트워크 관련 문제를 만나더라도, 빠르고 정확하게 해결할 수 있도록 과거에 몰라서 헤맸던 경험을 기록해두려고 한다. 공인 IP (Public IP) ISP(인터넷 서비스 공급자)..
세미나 소개 - 구름에서 매달 진행하는 개발자를 위한 세미나 COMMIT - 구름 공식 블로그 (goorm blog) COMMIT은 COMMUNICATION과 IT의 합성어로 한 달에 한 번 수요일에 기술, 개발, 성장, 조직 문화 등에 관한 이야기를 나누려고 해요. blog.goorm.io 매번 메일로 알림을 받아서 관심있는 주제라면 들어보려고 노력하고 있다. 이번 회차 주제는 "성공적으로 신기술을 도입하는 법" 아래 내용은 세미나를 들어보면서 정리했던 내용이다. 누구나 관심있고 궁금할 수 있는 내용이라 블로그에도 올려두려고 한다(문제가 되면 지울 것) 신기술 도입 원칙 리스크보다 큰 이점이 있는가 리스크 : 신기술을 도입하고나면 (높은 확률로) 어떠한 트러블 슈팅이 발생 그럼에도 불구하고 도입을 할 ..
프로젝트 중 데이터 전송 건에 대해 누락이 있었고, 이를 확인하는 과정 중에 이해가 안가는 부분이 있어 파트 선배에게 질문을 했다. 선임 개발자분이 누락건과 그 이유를 분석하기 위해서 이력 테이블을 뒤져보고 pk를 조건 걸어서 조회해봤을때 매칭되는 로우가 없는 것을 보고 이력 테이블에 데이터가 누락되어있어서 전송이 안되었다고 하셨다. 이력 테이블에 해당 날짜를 조건으로 걸어서 조회했을때 데이터가 존재하지 않은것을 보고 누락되었다고 판단한 배경이 궁금해져서 질문을 했고, 선분이력 이라는 데이터를 관리하는 개념을 알게 되었다. 점이력(시점이력) 데이터의 변경이 발생한 시점에 대해서만 관리 선분이력 시점마다 달라지는 데이터를 관리하기 위한 개념 데이터의 변경이 적용된 시작 시점부터 그 상태의 종료시점까지 관리..
목차 새해가 지난지 한달이 흐른 늦은시점이지만, 회고를 통해서 작년을 되돌아보려고 한다. 작년 한 해는 생활 패턴과 같은 일상의 작은 부분들을 비롯해서 삶의 방향, 방식 등 큰 부분까지 많은 변화가 생겼던 것 같다. 이런 변화들을 글을 통해서 되돌아보고 새로운 한 해를 다시 준비해보려고 한다. 취업 작년 중 가장 큰 사건이자 변화라고 한다면 취업일 것이다. 운이 좋게 취업 준비를 시작하자마자 바로 좋은 이미지를 갖던 기업에 입사를 하게 되었다. 취업 후 가장 변화된점을 뽑자면 삶의 방향성을 갖게 된 점이있다. 과거에는 단순한 목표이기만했던 개발자라는 직업이 이제는 밥벌이 수단이 되었고, 나를 표현하는 방식이 되었다. 이 직업을 갖고 만나는 사람들 속에서 나의 역할은 무엇이고 어떤 태도로 일을 하고 무엇을..
Motivation 1. Kafka Connector 내용을 공부하면서 DB에 실제로 카프카 커넥터를 붙여서 실행하고 사용해면 좋은 경험이 되고 더 잘 기억에 남을 것 같았음 ✔ 아쉬웠던 점 👉 자주 사용하는 ORACLE로 연동해보면 더 좋을 것 같다고 생각해서 시도를 했으나 잘 안됐음, 관련 글을 찾아봤는데 ORACLE에 Connector를 연동한 사례가 별로 없었음(MySQL은 비교적 예시도 많았으나, 오라클은 유독 없음. 오라클에 적용할 수 없는 어떤 이유가 있는건가.. 의문..) 👉 m1맥이라 오라클 서버를 실행할 수 없어서 오라클 클라우드에서 제공하는 Autonomous DB를 사용하고 있었는데, 여기에 카프카 커넥터를 적용한 사례가 하나 있긴했으나 Docker를 이용한 방법(나는 카프카 서버..
목차 배경 상용 서버는 대부분 linux 환경에서 구동되는데, 서버 개발과 운영 모니터링을 하다보면 서버의 로그를 확인해야하는 순간들이 생긴다. 이때 직접 서버에 접속하고 로그 파일을 탐색하며 어느시기(대게 몇시 몇분 몇초 단위로)에 어떤 요청을 받고 어떤 에러를 뱉었는지 분석해야하는 순간들이 종종 발생하는데, 그때 linux의 파일 내용 검색 명령어를 활용하면 파일 탐색시간을 축소할 수 있고 그만큼 빠른 시간내에 로그를 분석하여 에러를 확인할 수 있다. 대부분 서버는 linux 환경에서 구동되기 때문에 동작 방식과 관련 명령어들을 숙지해두면 서버 로그 파일 탐색과 모니터링 이외에도 서버 개발과 운영을 하는데 많은 도움이 될 것 같다. 이번에는 그 중 linux 환경에서 파일 탐색을 하는데 쓰이는 기본..
데드락(DeadlocK) 시스템 자원에 대한 요구가 뒤엉켜서, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다리며 무한 대기에 빠지는 상황 데드락 발생 조건 상호 배제 한 번에 하나의 프로세스만 자원을 사용할 수 있음 사용중인 자원을 다른 프로세스가 사용하려면 해제될때까지 기다려야 함 점유 대기 다른 프로세스에 할당된 자원을 점유하기위해 대기하는 프로세스가 존재해야함 비선점 이미 할당된 자원을 강제로 뺏을 수 없음 순환 대기 대기 프로세스의 집합이 순환 형태로 자원을 기다리고 있어야함 해결 방법 예방(Prevention) 데드락이 발생하지 않도록 예방 회피(Avoidance) 데드락 발생 가능성을 인정하면서 적절하게 회피 탐지 및 회복(Detection & Recovery) 데드락 ..
필요한 단축키 있을때마다 계속 업데이트 익혀두면 코드 짤 때 / 리팩토링할 때 / 기존 코드 뒤져볼때 상당히 편리함 필수 단축키 Windows MacOS 단축키 기능 Ctrl + Shift + Space Control + Shift + Space 적합한 코드 자동완성 추천 Shift + Shift Shift + Shift 파일, 클래스, 설정 등 키워드에 관련된 가능한 모든 것을 검색 Alt + Insert Command + N 생성자, Getter/Setter, toString과 같은 코드 생성 (Lombok으로 대체 가능) Ctrl + W Ctrl + W 커서 근처의 코드 선택 영역 확대 Ctrl + Shift + W Ctrl + Shift + W 커서 근처의 코드 선택 영역 축소 Ctrl + P C..
DUAL 테이블 오라클에서 제공하는 기본 테이블 SYS 소유이지만 모든 사용자에게 권한을 주어서 내가 만든 테이블처럼 조회 가능 사용법 1. 임시로 원하는 임시 값을 리턴받고 싶을 때(간단한 테스트를 하는 경우) SELECT 'nooblette.net' as nooblette; select 쿼리를 통해 간단한 데이터베이스 접속 테스트를 원할 때 mysql과 MSSQL에서는 위와같이 select만 있는 쿼리를 지원해서 조회해볼 수 있지만, ORACLE에서는 이를 지원하지 않는다. SELECT 'nooblette.net' as nooblette FROM DUAL; 이때, 위처럼 FROM 절에 DUAL 테이블을 담아서 사용할 수 있다. 즉, FROM절에 특정 테이블을 담지않고 select 만으로 데이터를 조..
트랜잭션 DB에서 데이터의 일관성과 무결성을 보장 하나의 그룹으로 처리되어야 하는 명령어를 모아놓은 작업 단위 e.g) 하나의 그룹이 4개의 SQL문으로 이루어졌을 경우, 4개의 SQL문이 완전히 처리가 되거나 아니면 하나도 수행이 되지 말아야함(All-OR-Nothing) 일반적으로 Begin_transaction과 End_transaction으로 나뉘어 트랜잭션 그룹 내에서 처리해야할 명령어들을 기술 트랜잭션 단위 장애 발생 시 복구 작업을 할 때 사용 병행 제어 시 논리 작업 단위로 사용 데이터베이스의 일관성과 무결성을 유지하기 위해 여러개의 트랜잭션 단위를 잘 정의해두어야함! 트랜잭션 예시 A가 B에게 100,000원을 이체하는 경우 하나의 트랙잰션에 들어가는 4개의 SQL문을 정의 Select ..
백엔드 개발과 관련한 업무에 대해 배우고 조금씩 실제 코드를 만져가며 작업을 하면서, 브라우저에서 사용자에게 화면을 보여주기 위한 두 렌더링 과정을 이해하고 차이를 분명히 알아두어 넘어갈 필요를 느꼈다. SSR(Server Side Randering)과 CSR(Client Side Rendering) 들어가기에 앞서, Rendering : 웹 페이지가 요청해서 (서버로부터) 받은 내용을 브라우저 화면에 표시하는 것 SSR(Server Side Rendering) - 서버 사이드 렌더링 서버쪽에서 렌더링 준비까지 마친 상태로 클라이언트에게 전달하는 방식 전통적인(오래된) 웹 애플리케이션에서 주로 사용 요청할때마다 서버에서 처리를 한 후 페이지에 응답 새로고침이 일어나면 새로운 페이지가 렌더링됨 과정 Use..