BackEnd
-
[스프링] 핵심 원리 이해 - 객체 지향 원리BackEnd/Spring 2022. 5. 13. 01:02
스프링 핵심 원리 - 기본편 (인프런) 강의를 듣고 느낀점을 정리한 글입니다. 스프링 원리 그리고 객체 지향의 원리 스프링 원리를 이해하기 위해서는 객체지향 원리를 잘 파악해야한다. 객체 지향의 뜻 위키백과를 참고하면. 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임의 하나이고, 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임 으로 파악하고자 하는 것이다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 객체 지향 설계에 고려해야할 조건들 역할과 구현을 분리했나? 다형성을 활용하고, 인터페이스와 구현 객체를 분리했나(상속)? OCP, DIP 등과 같은 설계 원칙을 충실히 준수했나?..
-
[대규모 시스템] 사용자 수에 따른 규모 확장성BackEnd/대규모 시스템 설계 2022. 3. 1. 23:03
해당 장에서는 한 명의 사용자를 지원하는 시스템에서 몇백만 사용자를 지원하는 시스템까지 훑어본다. 단일 서버 단일 서버는 웹, 앱, 데이터베이스, 캐시 등이 하나의 서버에서 실행하는 경우를 말한다. 사용자 요청 처리 흐름은 다음과 같다. 사용자가 도메인 이름을 입력하여 웹사이트에 접속한다. DNS 조회 결과로 IP 주소가 반환된다. (DNS 는 외부 서비스이다) 해당 IP 주소로 HTTP(HyperText Transfer Protocol) 요청이 전달된다. 요청을 받은 웹 서버는 HTML 페이지나 JSON 형태의 응답을 반환한다. 단말기 요청 종류 웹 애플리케이션 : 비즈니스 로직, 데이터 저장 등을 처리하기 위한 서버, 프레젠테이션 위한 클라이언트로 구분한다. 모바일 앱 : 웹 서버와 통신 위한 HTT..
-
H2 DatabaseBackEnd/Etc. 2022. 1. 4. 15:02
H2 Database 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 자바 애플리케이션에 내장될 수도 있고 별도 서버 버전으로 구동할 수 있다. (데이터 영속성 유지가능) 자바가 로컬에 설치가 되어 있어야 하며, H2 DB Driver 도 사용가능하며, Oracle, MySQL, PostgreSQL 등과 호환이 가능하다. 개발용 DB 로 많이 사용한다고 한다. 공식 문서에 작성된 특징이다 매우 빠른 오픈 소스, JDBC API 임베디드 및 서버 모드; 디스크 기반 또는 메모리 내 데이터베이스 트랜잭션 지원, 다중 버전 동시성 브라우저 기반 콘솔 애플리케이션 암호화된 데이터베이스 전체 텍스트 검색 설치 공간이 작은 순수 Java: 약 2.5MB jar 파일 크기 ODBC 드라이버 설치 Windows I..
-
[IntelliJ] VisualVM PlugIn 설치BackEnd/Etc. 2021. 10. 15. 15:24
VisualVM 이란? JVM을 실시간으로 모니터링 할 수 있는 오픈소스 기반 GUI툴. 1. VisualVM .zip Download VisualVM 공식홈페이지 https://visualvm.github.io VisualVM: Home News: July 20, 2021: VisualVM 2.1 Released This release adds support for Java 17, introduces lock contention profiling, enables JFR dumps on demand and much more! See the Release Notes for all changes. The tool can be downloaded from the Download page, sou visualv..
-
[MongoDB] Linux 서버 복제 (ReplicaSet) 구성하기BackEnd/MongoDB 2021. 10. 15. 14:01
Replica Set (복제) 개념 이해 구성요소 Primary Master Mongo 서버, 쓰기만 하는 인스턴스 본인 DB 에도 적재한다. Secondary 에 복제하는 역할이다. Secondary 읽기를 지원하는 DB 이며 Primary 가 될 수 있는 자격을 가졌다. Arbiter 일종의 감시자이며 Primary 가 죽으면 Secondary 를 투표하는 역할을 지닌다. 하위 예제 샘플에서는 Primary 1개, Secondary 2개 로 설정할 것이다. 복제 구성 하기 - MongoDB 공식 홈페이지 https://www.mongodb.com/try/download/community MongoDB Community Download Download the Community version of Mon..
-
[MongoDB] Linux 서버 독립 MongoDB 구성하기BackEnd/MongoDB 2021. 10. 14. 15:14
MongoDB 공식 홈페이지 https://www.mongodb.com/try/download/community 위 MongoDB 공식 홈페이지에서 community Server tar 파일을 다운 받는다. cd mongodb wget os별_MongoDB_downlink tar -xvf 다운파일 설치 후 bin 디렉토리 하위에 다음과 같은 실행 파일들이 나온다. mongo : 실행중인 MongoDB 서버에 접속하기 위한 실행파일 (독립, 복제, 샤딩 구성 구분없이 접근용) mongod : MongoDB 서버를 실행시키기 위한 파일 mongos : MongoDB Router 를 실행시키기 위한 파일 (샤딩구성시 필요) MongoDB 에는 다음 요소가 필요하다. (필요시 별도 디렉토리로 관리) data :..
-
[MongoDB] Linux 서버 샤딩 (Sharding) 구성하기BackEnd/MongoDB 2021. 10. 7. 16:17
샤딩 개념의 이해 위 사진은 몽고DB 의 샤딩구성요소이다. Mongos 라우터의 역할을 하는 몽구스는 애플리케이션과 샤드 클러스터 간의 인터페이스를 제공한다. 별도의 데이터를 가지고 있지 않으며 설정서버의 메타 정보로 데이터를 각 샤드에 전달한다. Config Server 설정 서버는 클러스터의 메타 데이터와 설정을 저장한다. Mongos의 DB path 도 설정서버를 바라본다. Replica set 구성으로 설정해야한다. Shard 데이터 저장 단위가 되는 기본 인스턴스 Replica set 구성으로 설정해야한다. 1개 이상의 인스턴스를 설정할 수 있다. Replica Set (복제) 개념 이해 구성요소 Primary Master Mongo 서버, 쓰기만 하는 인스턴스 본인 DB 에도 적재한다. Sec..
-
Spring boot 와 websoket 을 이용한 간단 채팅 서버BackEnd/간단 프로젝트 2021. 7. 5. 22:38
- Spring 에서 제공하는 Websocket을 이용하여 채팅 서버를 구현하도록 한다. 채팅서버는 socket 통신을 하는 서버가 필요하다. 보통 http 통신은 client 의 요청이 있을 때 서버가 응답한 후 연결을 종료하는 단방향 통신이다. socket 통신은 Server 와 Client 가 지속적으로 연결을 유지하고 양방향으로 통신을 하는 방식이다. WebSocket 양방향 통신을 제공하기 위해 개발된 프로토콜, 일반 socket 통신과 달리 HTTP 80 Port 를 이용하고 방화벽에 제약이 없다. 접속까지는 HTTP 프로토콜을 이용하고 그 이후의 통신은 자체적인 Websocket 프로토콜로 통신한다. Spring initializr 로 프로젝트 생성 build.gradle plugins { ..