분류 전체보기 94

[Network][AWS] AWS 네트워크 구성요소 - 2. 네트워킹 구성요소

AWS 환경에는 네트워크를 구성하고 보안이나 통신 설정들을 조절할 수 있도록 하는 구성요소들이 있다. 이 포스팅에서는 VPC, 서브넷, 인터넷 게이트웨이, NAT 게이트웨이에 대해 설명하고자 한다. Availability zone (AZ) AWS 는 1차적으로 리전이라는 그룹으로 나누어 지고, 리전 내에는 AZ 라는 영역으로 나누어 진다. 서울 리전을 예로 들어 보자면, 서울 리전 내에는 3개의 AZ 가 있는데, 이 AZ는 실제로 현실에 존재하는 데이터 센터 하나를 의미한다. AWS 가 인터넷 클라우드 서비스이긴 하나 실제로는 거대한 데이터 센터의 컴퓨팅 능력을 떼서 제공하는 것이기 때문에, 현실세계의 서버가 필요하다. 이 데이터 센터 하나가 하나의 AZ 에 대응하게 된다. 이렇게 AZ 를 나누는 이유는..

[Network][AWS] AWS 네트워크 구성요소 - 1. 인터넷 네트워크 기초와 IP 주소 체계

우리는 컴퓨터와 인터넷을 통해 다른 컴퓨터와 채팅이나 게임도 할 수 있고, 여러 기업의 사이트를 접속하기도 하며, 날씨도 본다. 내가 특정 사이트나 다른사람과 연결되고 싶을 때 어디로 연결되어야 되는지 알아야 하는데, 그 '어디'를 나타내는 것이 IP Address 이다. 게임 서버에 접속하려면 그 서버의 IP 주소를 알아야 하고, 다른 사람과 직접 연결되어 파일을 주고받으려고 해도 IP 주소가 필요하다. 채팅을 하기 위해 중간에서 매개 역할을 해주는 서버에 접속하기 위해서도 IP 주소는 필요하다. 이번 챕터에서는 IP 주소가 어떻게 생겨먹었는지, 어떤 종류가 있는지, 어떤 방식으로 이용되는지 알아보도록 하자. IP Address 인터넷에서 기기를 식별하는 IP 주소는 처음에는 32비트로 이루어진 숫자로..

[Network] AWS 에서의 네트워크 구성요소에 대해 - 서론

이번에 AWS EC2 인스턴스에 띄어져서 열심히 일하고 있는 회사의 웹서버, API 서버 구성을 검토받던 중 보안을 위한 네트워크 구성이 미비한 것을 지적받고 개선 작업을 착수 중에 있다. 그런데 현재는 AWS 내에서 보안 그룹, 서브넷, VPC, 인터넷 게이트웨이, NAT 등 여러 요소들의 존재여부만 알고 있다거나 살짝 건들이면 사내/외부에서 접속이 가능해 진다던지 그런 부분만 알고 있었는데, 개선 작업을 하고 컨설팅을 받는 과정에서 자세한 지식이 필요하다고 생각 되어서 정리하게 되었다. 아래와 같은 과정으로 정리해 갈 예정인데, 어느정도 사전 리서치를 진행해 보고 chat gpt 를 활용해서 공부 및 정리 계획을 세웠다. 파트별로 하나의 포스팅을 할예정이니 참고 바란다. 1) 네트워크 기초와 IP 주..

[Java] Boxing 과 Unboxing

Java 에서는 원시 타입과 참조 타입이라는 개념이 있다. 원시 타입은 int, long, char 등의 가장 기본적인 숫자, 문자등을 저장하는 타입이고, 참조 타입은 Integer, String, Object 등이 있다. 원시 타입은 메모리에 할당된 변수에 '값' 이 바로 들어가 있는 경우를 말하고, 참조 타입은 메모리에 할당된 변수에 '메모리 주소'가 들어가 있어서, 해당 메모리 주소를 한번 더 참조해서 '값' 을 찾아야 한다. Boxing 과 Unboxing 은 주로 이러한 원시 타입과 참조 타입간의 변환 가정을 말한다. Boxing : 원시 타입 -> 참조 타입으로의 변환 int 를 Integer 로 변환. long 을 Long 으로 변환, char 를 Char 로 변환 Unboxing : 참조 ..

개발자의 길 2024.01.22

[MySQL] 스토어드 프로시저

개발을 하다 보면 쿼리문 작성에 시간을 많이 쏟게 되고, ORM 이던 Raw query 문이던 쿼리 작성을 위한 코드를 프로젝트에 많이 넣게 되는데, 이런 쿼리 레벨에서의 로직을 DB 에 직접 넣을 수 가 있다. MySQL 에서 '스토어드 프로시저' 라는 기능으로 제공되고 있다. 간단히 말하면 데이터베이스 내에 하나의 함수를 작성한다고 보면 된다. 스토어드 프로시저를 쓰면 아래와 같은 장점이 있다. 성능 향상: 스토어드 프로시저는 데이터베이스 서버에서 실행되므로 네트워크 지연을 줄일 수 있고, 데이터 처리를 최적화할 수 있다. 재사용성: 스토어드 프로시저는 여러 번 호출할 수 있으며, 코드 중복을 방지하고 관리가 쉽다. 보안 강화: 애플리케이션에서 직접 SQL 쿼리를 작성하는 대신 스토어드 프로시저를 호..

[MySQL] MySQL 의 Isolation level ( 격리 레벨 )

여타 RDBMS 와 같이 MySQL 역시 데이터의 정합성을 위해서 데이터를 잠그거나, transaction 단위로 작업을 관리하고, 각 트랜잭션이 수행한 작업들을 별도 로그에 저장해서 언제든 롤백할 수 있도록 관리하고 있다. 여기서 격리 레벨은 이 데이터 정합성을 지키기 위해 얼마나 엄격히 트랜잭션간의 작업을 격리시키는지를 의미하는데, 다음과 같이 4 단계의 격리 레벨이 있다. READ UNCOMMITTED 가장 낮은 격리 수준으로, 다른 트랜잭션에서 커밋되지 않은 변경 내용을 볼 수 있으며, 이로 인해 'Dirty Read'가 발생할 수 있다. READ COMMITTED 커밋된 데이터만 읽을수 있게 되어서 'Dirty Read'는 방지하지만, 'Non-Repeatable Read' 문제는 여전히 발생한..

[서평] 퓨처셀프 @벤저민 하디 - 미래의 나와 현재를 연결하라

이번에 읽은 책은 '퓨처 셀프' 라는 책이다. 내 책장에 있는 책들 중 대부분은 신영준 박사님과 고영성 작가님이 계시는 '스터디언' 이라는 유투브 채널에서 추천해준 책들이 많은데, 이 책도 그 중 하나이다. 나는 항상 뭔가 선택의 기로에 놓였을 때 이 선택을 미래의, 10년 뒤의 내가 잘한 선택이라고 생각할까? 하고 생각하고 했다. 퇴사를 하고 이직을 한다거나, 하고싶었던 무언가에 도전한다거나 할 때 말이다. 이 책의 소개를 접했을 때 나의 이런 생각 방식과 비슷하다는 느낌이 들어서 책을 읽기 시작했다. 내가 평소 큰 결정을 할 때 생각하던 방식을 일상의 여러 경험들에 적용하고, 목표들에 적용하는 방식으로 책 내용을 펼쳐나가는 느낌이라 꽤 재밌게 읽었다. --- 여기부터는 책 내용 스크랩입니다 -----..

[SQLAlchemy] SQLAlchemy 에서 DB 에 접근하는 방법 - 2

이전 게시글에서 DB 에 접근하는 방법과 DB 에 데이터를 반영하는 방식에 대해 설명하였는데 정리하자면 다음과 같다. - SQLAlchemy 에서는 session 이라는 영역에 DB 에 반영할 데이터를 저장하고 있다가 flush 나 commit 등을 수행하면 DB 에 반영된다 - 이전의 DB 연결방법인 Flask app 객체를 SQLAlchemy 생성자에 전달해서 DB 커넥션을 하는 방법에서는 SQLAlchemy.session 변수로 자동 생성된 session 을 이용할 수 있다 이번 포스트에서는 session 을 제어하는 여러 방법을 이야기하고자 한다. session 을 제어하는 방법 session.begin() 이 메소드를 호출하면 해당 세션에 대한 데이터베이스 작업은 이 트랜잭션의 일부가 된다. 명..

개발자의 길 2023.12.18

[SQLAlchemy] SQLAlchemy 에서 DB 에 접근하는 방법 - 1

SQLALchemy 는 Python 언어의 서버 개발환경에서 사용할수있는 ORM 라이브러리중 하나이다. Flask 프레임워크로 작성된 서버에서 주로 이 ORM 을 사용하는데, SQLAlchemy 를 어떻게 사용하여 DB 에 접근하고 Table 에 있는 row 를 접근/제어하는 방법을 소개하고자 한다. SQLAlchemy 객체로 데이터베이스 연결을 수립하는 방법 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' # SQLite를 사용하는 예시 app.config['SQLALCHEMY_TRACK..

개발자의 길 2023.12.11

[MYSQL] OUTER JOIN 과 INNER JOIN

MYSQL 에서 꽤나 자주 쓰이는 join 에 대해 설명하고자 한다. join 은 두 테이블의 column 을 비교하여 일치하는 row 들을 조합하는 것이다. Inner Join Inner Join은 두 테이블 간의 교집합을 찾는 SQL 조인 방식이다. 이 방식은 두 테이블에서 일치하는 데이터만 반환한다. 예를 들어, '고객' 테이블과 '주문' 테이블을 Inner Join 하면, 주문 기록이 있는 고객 정보만을 가져온다. 사용 예 SELECT * FROM 고객 INNER JOIN 주문 ON 고객.고객ID = 주문.고객ID; 이 쿼리는 '고객'과 '주문' 테이블에서 고객 ID가 일치하는 레코드만을 선택한다. Outer Join Outer Join은 두 테이블의 합집합을 반환한다. 이 방식은 일치하는 데이터..

반응형