분류 전체보기 250

[Amazon] 서버리스 백엔드 구축하기

서버리스 모듈은 AWS Lambda와 Amazon Dynamo DB라는 것을 사용하여 웹 어플리케이션의 요청을 처리하는 백엔드 프로세스를 빌드한다. 이 동작은 브라우저에서 Javascript가 클라우드에서 실행되는 서비스를 호출해야 한다. 사용자가 유니콘을 요청할 때 마다 호출되는 람다 함수를 구현한다. 이 함수는 Amazon API Gateway를 사용하여 브라우저에서 호출된다. * Amazon Dynamo DB 테이블 만들기 1. AWS Management 콘솔에서, DynamoDB를 선택한다.2. Create table을 선택한다.3. Table name을 입력한다.4. Partition Key 이름을 설정하고 String 타입을 선택한다.5. Use default settings 체크박스를 선택하..

[Amazon] Cognito 를 이용한 사용자 인증

아마존에서 제공하는 Cognito는 user pool이라는 것을 만들어서 사용자의 계정을 관리한다. 고객이 새 사용자로 등록하고 이메일 주소를 확인하고 사이트에 로그인할 수 있는 웹 페이지를 배포한다. 사용자가 웹 사이트를 방문해서 사용자 계정을 등록한다. 직접 구현하지 않고 Amazon Cognito가 자신의 응용프로그램에 추가 속성을 요구하도록 할 수 있다. 사용자가 등록을 완료하면 Cognito는 확인 코드가 포함된 검증 이메일을 사용자의 이메일로 보낸다. 계정을 확인하기 위해서 사용자는 사이트로 돌아와 이메일주소와 받은 인증코드를 입력한다. 사용자가 확인한 계정이면 로그인을 할 수 있다. Javascript함수는 Amazon Cognito와 통신하고, Secure Remote Password pr..

[Amazon] S3를 사용한 정적 웹 호스팅

이 모듈의 아키텍쳐는 HTML, CSS, Javascript, 이미지 및 기타 파일을 포함한 정적 웹 컨텐츠를 S3에 저장하는 것이다.결과적으로 사용자는 S3에 공개된 웹 사이트 URL을 사용하여 사이트에 액세스 한다. 사이트를 사용할 수 있게 하기 위해서 웹 서버를 실행하거나 다른 서비스를 사용할 필요가 없다. 이 URL은 엔드포인트 URL을 사용하게 된다. * S3 만들기 1. AWS Management Console에서 Service를 누른다음 S3를 선택한다.2. Create Bucket을 누른다.3. 버켓 이름은 전 세계적으로 고유한 이름으로 설정한다.4. 리전을 선택한다.5. Create * 웹 사이트의 컨텐츠 업로드 하기 S3 버킷에다가 드래그 앤 드롭으로 웹사이트 파일들을 올릴 수 있다. ..

[데이터베이스] 트랜잭션에 대해서

트랜잭션이란 하나의 논리적인 작업 단위를 이루는 여러 연산들의 집합을 말한다. 예를들어, 한 계좌의 돈을 다른 계좌로 이체하는 계좌 이체 작업은 각 계좌의 잔고를 변경하는 두 개의 갱신 연산으로 구성되어있는 하나의 트랜잭션이다. 트랜잭션이 지녀야할 기본 속성 (ACID 성질) Atomicity (원자성) 어떤 오류가 발생했을 경우에는 미완료된 트랜잭션이 부분적인 영향까지 모두 되돌려야 한다. 즉 트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 한다. 일부만 수행된 상태가 되어서는 안됨 -> all or nothing 원자성을 보장하기 위한 아이디어는 데이터베이스 시스템이 트랜잭션이 갱신하는 데이터의 예전 값을 기록하는데 이 정보는 로그(log)라고 불리는 파일에 기록된다. Consistency ..

[IntelliJ] 스프링 프로젝트 초기 세팅하기 - (1)

인텔리J를 실행한다. 처음 new Project를 선택 후 Maven을 골라준다. 넥스트 때린다. groupId와 artifactId는 본인이 원하는 대로 우측 하단에 메이븐 자동추가할 것인지를 묻는다. 할 때마다 build하기 귀찮으므로 오토로 해준다. 그리고 pom.xml에 스프링에 관련된 dependency들을 추가해준다. org.springframework spring-webmvc 4.3.1.RELEASE org.springframework spring-web 4.3.1.RELEASE javax.servlet servlet-api 2.5 그럼 이렇게 External Libraries에 자동으로 jar파일들이 들어오게 된다. File -> Project Structure로 들어간다. Facets에 ..

IntelliJ에서 JDBC 테스트하기

JDBC (Java Database Connectivity)의 정의 - 자바를 이용한 데이터베이스 접속과 SQL문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약- 자바 프로그램내에서 SQL문을 실행하기 위한 자바 API- SQL 과 프로그래밍 언어의 통합 접근 중 한 형태 JDBC를 이용한 데이터베이스 연결 방법 import java.sql.* -> 드라이버 로드 -> Connection객체 생성 -> Statement 객체를 생성 및 질의 수행 -> SQL문에 결과물이 있다면 ResultSet 객체 생성 -> 모든 객체 닫기 코드를 보면서 살펴보자. 인텔리제이를 실행시킨다. 이클립스에서 해도 상관없다. 자바 프로젝트를 하나 생성한다. 그리고 데이터베이스 드라이..

[네트워크] TCP 멀티플렉싱 이해하기

멀티플렉싱이란? 하나의 통신 채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술이다. 기본적으로 멀티플렉싱이란 여러 개를 하나로 묶어 다중화 시킨다는 뜻이다. 코드에서 볼 것은 여러 개의 channel을 하나로 묶어서 사용하는 것인데, 이 방법을 입출력에 적용한다. 여기서 입출력 버퍼를 사용하게 된다. Blocking mode로 동작하는 것들과는 달리 멀티플렉싱은 Non-Blocking Mode로 동작하게 된다. I/O blocking : I/O의 효율을 높이기 위해 디스크에서 읽어오는 data를 운영체제의 kernel 버퍼 에 저장한 후, 버퍼가 꽉 차면 프로세스의 버퍼로 옮기는데, data가 kernel 버퍼로 저장되는 동안 프로세스의(정확하게는 I/O를 요청한 thread가) blocking..

[오라클] DDL & DML

DDL 예제를 돌려보자. 기본 생성된 베이스테이블과 데이터는 http://pjh3749.tistory.com/156 여기서 sql파일을 받아서 developer에 때려넣자. create table history1 as select * from emp 데이터도 이렇게 똑같이 복사된다. 그렇다면 안의 데이터는 없이 그냥 테이블만 복사하려면 어떻게 해야할까? create table history2 as select * from emp where 1=0 이렇게 칼럼만 있고 데이터는 복사가 되지 않음을 알 수 있다. # 테이블 구조 살펴보기 desc history1 # 제약 조건 Constraint Database에 테이블 레벨에서 특정한 규칙을 설정해둠예상치 못한 데이터의 손실이나 일관성을 어기는 데이터의 추가..

[소프트웨어공학] 프로젝트 관리와 비용추정

소프트웨어 관리는 소프트웨어 공학의 필수적인 부분이다. 좋은 관리라고 해서 프로젝트의 성공을 보장할 수는 없다. 그러나 나쁜 관리는 프로젝트를 실패로 이끈다. 소프트웨어 관리자는 프로젝트 개발을 계획하고 일정을 관리하는 책임을 진다. 소프트웨어 관리자는 다른 공학과 구별된다. 1. 소프트웨어 제품은 형태가 없다. 소프트웨어 제품 관리자는 프로젝트 진척사항을 볼 수 없다. 그들은 프로젝트 진척사항을 점검할 수 있는 문서를 생성하는 사람에게 의존한다. 2. 표준화된 프로세스가 없다. 소프트웨어 프로세스는 조직에 따라 매우 가변적이다. 3. 대규모 소프트웨어 프로젝트는 대개 일회성(one-off)프로세스이다. 대규모 소프트웨어 프로젝트는 대개 어 방향에서 이전 프로젝트와 다르다. 이런 문제 때문에 소프트웨어 ..

[오라클] Grouping 과 Subquery

저번 시간에 Aggregation 을 했는데 이것은 집계함수라고도 하며 이 결과는 하나의 row만 남게 된다. 그러므로 Grouping을 해주어야 같이 쓸 수 있다. # Grouping 이렇게 deptno로 grouping을 해주면 AVG를 쓰는데 문제가 없다. SELECT job, avg(sal), max(sal), min(sal) FROM emp GROUP BY job 직업별 평균 월급과 최대월급 최소월급을 구하고 싶다. 저 뒤에 group by를 써주지 않는다면 이렇게 sql에러가 날 것이다. ORA-00937: 단일 그룹의 그룹 함수가 아닙니다 00937. 00000 - "not a single-group group function" select deptno, count(*) from emp gr..

반응형