전체 글

/* Sik의 개발 log를 남기는 공간 */
· Architecture
Spring MVC 패턴기반의 애플리케이션에서는 관성적으로 Model & View & Controller 패키지를 만들고 시작하는 경우가 대부분이었다. 이번에 웹 애플리케이션을 새로 구성하면서 원래 흔히 알고있던 계층형 구조가 아닌 도메인구조가 있다는 것을 알게되어서 이번에 적용하면서 배워보는 글이다. 1. 계층형 구조 controller ⎿ ProductController ⎿ MemberController ⎿ CartController service ⎿ ProductService ⎿ MemberService ⎿ CartService dao ⎿ ProductDao ⎿ MemberDao ⎿ CartDao domain (model) ⎿ Product ⎿ Member ⎿ Cart 일반적으로 배우기도 그렇고 알..
· Network
사내에서 서비스 중 admin 쪽에 Okta 관련 연동을 도입한다고 하기에 미리 공부하기 위해 끄적여본다.. Okta 연동관련하여 크게 3가지로 구현할 수 있는데 SAML, OAuth과 OIDC이다. 3가지 프로토콜에 대해서 알아보자 우리는 여러 사이트를 돌아다니면서 서비스를 사용하기 위해 계정을 만들고 로그인을 하게 됩니다. 예전에는 여러 사이트마다 각자 계정을 만드는 일이 잦았는데 최근엔 대형 회사들 (Google, Naver, Kakao 등)의 계정 SSO 로그인 기능을 활용해 대신 할 수 있게 되었습니다. SSO (Single-Sign-On) 란? 이름 그대로 단일 로그인, 즉 한번의 로그인으로 여러개의 어플리케이션들을 이용할 수 있게해주는 서비스 입니다. SSO가 없다면 사용하고자 하는 서비스마..
· Network
IP (아이피) IP (아이피) : Internet Protocol의 줄임말로, 인터넷상에서 사용하는 주소체계를 의미한다. 공인 IP와 사설IP로 나누어질 수 있다. 인터넷에 연결된 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분된다. 이러한 네 덩이의 숫자로 구분된 IP 주소체계를 IPv4라고한다. (현재 사용하는 주소 체계) ※ 터미널에서 간단한 명령어로 도메인의 IPv4 주소를 확인할 수 있다. 터미널을 열고, nslookup (도메인 네임 ex - naver.com)을 입력하면 된다. IPv4 IPv4(Internet Protocol version 4)는 IP 주소체계의 네 번째 버전을 뜻한다. IPv4는 각 덩어리 마다 0부터 255까지 나타낼 수 있다. 이 시스템을 따르면, 2^(32..
Git Commit 컨벤션 구조에는 대표적으로 두가지 방식으로 사용한다. 컨벤션을 지키는 구조 또는 깃이모지를 활용한 메시지 작성방법으로 두가지에 대해 알아보자 Commit 메세지 구조 기본적인 commit 메시지 구조는 제목, 본문, 꼬리말 세가지 파트로 나누고, 각 파트는 빈줄을 두어 구분한다. type : subject body : content footer : content Commit Type 타입은 태그와 제목으로 구성되고, 태그는 영어로 쓰되 첫 문자는 대문자로 한다. 태그 : 제목의 형태로 작성 feat : 새로운 기능 추가 fix : 버그 수정 docs : 문서 수정 style : 코드 포멧팅, 세미콜론 누락, 코드 변경이 없는 경우 refactor : 코드 리펙토링 test : 테스트 ..
· Network
프로토콜(Protocol) 이란 ? 다수의 컴퓨터 사이나 중앙 컴퓨터와 단말기 사이에서 데이터 통신을 원활하게 하기위해 필요한 통신 규약이다. 컴퓨터 네트워크의 규모가 증가되고 네트워크를 이용한 정보 전송 수요가 다양화되며, 소프트웨어와 하드웨어 장비가 계속증가되는 최근의 환경에서 효율적인 정보 전달을 하기 위해서는 프로토콜의 기능이 분화되고 복잡해질 수 밖에없다. 이러한 환경적인 요구를 만족하기 위해 프로토콜 계층화의 개념이 나타나게 되었다. 프로토콜의 구성 프로토콜은 두 가지로 이루어져 있으며 물리적 측면과 논리적 측면으로 나뉜다. 물리적 측면 : 자료 전송에 쓰이는 전송 매체, 접속용 단자 및 전송 신호, 회선 규격 등 (물리 계층, 데이터링크 계층, 네트워크 계층) 논리적 측면 : 프레임(Fram..
· Architecture
데이터베이스의 규모 확장 저장할 데이터가 많아지면 데이터베이스에 대한 부하도 증가하게 된다. 그때가 오면 데이터베이스를 증설할 방법을 찾아야 한다. 데이터베이스의 규모를 확장하는 데는 두 가지 접근법이 있다. 📄 수직적 확장 Scale-up 이라고도 부르는 수직적 규모 확장법은 기존 서버에 더 많은, 또는 고성능의 자원(CPU, RAM, 디스크 등)을 증설하는 방법이다. 이러한 수직적 접근법에는 몇 가지 심각한 약점이 있다. 데이터베이스 서버 하드웨어에는 한계가 있으므로 CPU, RAM 등을 무한 증설할 수는 없다. 사용자가 계속 늘어나면 한대 서버로는 결국 감당하기 어렵게 될 것이다. SPOF(Single Point of Failure)로 인한 위험성이 크다. 비용이 많이 든다. 고성능 서버로 갈수록 ..
· Architecture
Scale-up VS Scale-out Scale-up은 수직적 규모 확장(vertical scaling)이라고 하며, 서버에 고사양 자원(더 좋은 성능의 CPU, 많은 RAM 등)을 추가하는 행위를 말한다. Scale-out은 수평적 규모 확장이라고 하며 더 많은 서버를 추가하여 성능을 개선하는 행위를 말한다. 서버로 유입되는 트래픽의 양이 적을 때는 수직적 확장이 좋은 선택이며, 이 방법의 가장 큰 장점은 "단순함"이다. 하지만 이 방법에는 몇 가지 단점이 존재한다. 수직적 규모 확장에는 한계가 있다. 한 대의 서버에 CPU나 RAM을 무한대로 증설할 방법이 없다. 장애에 대한 자동복구(failover) 방안이나 다중화(redundancy) 방안을 제시하지 않는다. 만약 서버에 장애가 발생한다면 웹/..
· Linux
top 명령어를 이용한 실행중인 프로세스 확인 top 명령어는 리눅스 계열 서버의 OS 상태를 확인할 수 있는 CLI 어플리케이션으로 서버에서 구동중인 모든 어플리케이션들을 CPU나 메모리 사용률 순서대로 나열하여 모니터링이 가능한 명령어이다. 서버의 CPU나 메모리의 사용량들을 확인할 수 있으며 Windows의 작업관리자와 같은 역할이라 생각하면 편하다. 배치와 같은 스케줄러 프로그램 구동시에 서버의 부하가 어느정도 되는지 테스트나 모니터링 할 때 주요하게 사용한다. 명령어 사용방법은 단순 top 명령어를 실행하면 사용이 가능하다. 서버의 CPU나 메모리의 사용률들을 대표적으로 볼 수 있으며, CPU 사용량이 많은 순서대로 프로세스 목록을 보여주고 있다. 첫 번째 줄 내용부터 현재시간을 표시하고, 서버..
· Network
현재 작업 중인 페이지에서 어떤 요청으로 인해 다른 페이지로 이동할 경우 Forward 방식과 Redirect 방식 2가지 방식으로 페이지를 전환해준다. 두 방식의 공통점은 자신에게 요청이 왔을 때 자신이 처리할 수 없기 때문에 다른 URL에게 요청 처리를 위임한다는 점이다. 하지만 요청 처리를 위임하는 과정에서 차이점이 발생한다. 그렇다면 이 두 방식의 차이점은 무엇일까? 하나씩 알아보도록 하자. 1. Forward 방식 Forward 방식은 URL 1에게 요청을 보내게 되면 해당 요청을 자신이 처리할 수 없기 때문에 다른 URL 2에게 직접 위임하여 처리하도록 하는 방식 서버 내부에서 처리하기 때문에 초기의 Request, Response 정보를 유지한 채로 전송된다. 또한, 서버 내부에서 일어나는 ..
· Linux
Linux 기본 명령어 정리 및 활용 리눅스 기초를 배우기 위해 오라클 VM머신을 활용한 예제이다. 서버쪽의 OS는 다른 운영체제와 달리 오픈소스이고 보안성이 우수하고 구조안정성 등에 적합하여 리눅스를 많이 사용한다. 활용하기 위해서 숙지해놓는 편이 좋다. 오라클의 VM virtualbox (CentOS, min버전) 설치 https://www.virtualbox.org/ Oracle VM VirtualBox Welcome to VirtualBox.org! News Flash New July 18th, 2023VirtualBox 7.0.10 released! Oracle today released a 7.0 maintenance release which improves stability and fixes..
developer_SIK
dev_log