이론
Transaction Isolation Level
안녕하세요 코딩하는헬린이입니다. 면접을 진행하면서 isolation Level에 대하여 따로 고민하거나 생각해두질 않아 포스팅합니다. 일단 트랜젝션의 성질부터 알아보는게 좋을듯합니다. 트랜잭션의 성질 (ACID) 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다. 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 ..
RESTfull API 설계를 위한 규칙
안녕하세요 코딩하는헬린이 입니다. 이번에 누군가가 Restfull 뭔가요? 라고 질문을 받았는데 정확하게 말을 해줄수 없었습니다. 저도 API를 설계하고 개발하는 입장으로 요즘 안일하게 규칙을 생각하였던거 같아 다시 원초적으로 돌아가 익히자는 의미에서 작성하게됐습니다. REST 란 REST는 Representational State Transfer라는 용어의 약자로, 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. 월드 와이드 웹과 같은 분산 시스템을 위한 소프트웨어 아키텍처의 한 형식이며, Roy T. Fielding 이 2000년에 REST란 논문으로 발표했습니다. 사진으로 표현한다면 아래와 같습니다. REST 구성 자원(Resource): URI ..
[BlockChain] IPFS (파일 분산 시스템)
안녕하세요 코딩하는헬린이 입니다. 오늘은 IPFS에 대하여 설명좀 해볼려고 합니다. 기본적으로 NFT 발급시 메타데이터, 이미지를 ipfs 이용하여 업로드하고 해당 IPFS 주소로 발행하곤 하는데요. 왜 IPFS 를 사용할까? 라는 생각이 들어 찾아보게 되었습니다. 1) IPFS 란 ? 모든 노드를 연결하는 분산된 P2P 시스템 이며 2014년 Juan Benet이 논문을 발표하며 세상에 들어냈다고 하며, HTTP 처럼 Web 프로토콜입니다. 대표적으로 해당 기술을 사용하는 코인 : 파일코인, 스토리지 등등 2) IPFS 왜 쓸까? - HTTP 프로토콜은 불안정하다 : 서버가 중간에 끊겨 버리면 해당 서버가 백업이 없으면 모든게 날아간다. 하지만 IPFS 는 중앙화된 서버에 의존하지 않기 때문에 안전하다..
[BlockChain] BIP-32 / BIP-39 / BIP-44 는 무엇인가 ?
안녕하세요 코딩하는헬린이입니다. 블록체인에 대해 개발하다가 궁금한게 있어서 찾아보다가 좋은글이 있기에 공유합니다. 간단히 말해서 "BIP39"는 무엇입니까? BIP39는 암호화폐 지갑 이 니모닉 문장을 구성하는 일련의 단어(또는 "니모닉 코드")를 생성하는 방법과 지갑이 암호화 키를 생성하는 데 사용되는 바이너리 "시드"로 변환하는 방법을 제시하는 설계 구현입니다. 그런 다음 암호 화폐 거래를 실행하는 데 사용됩니다. 여기서 니모닉코드란 월렛을 사용해보셨다면 쉽게 이해되실텐데 월렛을 복구하기위한 12개의 키워드로 나열되어있는 구문이라고 생각하면 편합니다. BIP32 및 BIP44 BIP32(" 계층적 결정론적 지갑 ")는 계층적 결정론적 지갑( HD 지갑 )을 위한 프레임워크를 제시하여 사람들이 공유할 ..
CI(Continuous Integration), CD(Continuous Delivery / Deployment) 란 무엇일까?
안녕하세요 코드짜는헬창입니다. 오늘은 개발을 하다보면 Jenkins를 사용하면서 CI/CD 라는 용어를 들어보신적이 있으시죠! 저도 CI/CD의 정확한 의미를 모르기에 알아가면서 포스팅 해보록 하겠습니다! # CI (Continuous Integration) 이란 무엇인가? 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미하며 코드를 Push 했을때 빌드 및 테스트를 자동화 해줍니다! 지속적 통합을 안하면? ? ! 어떤 다른 블로거분에 적절한 예를 들어주셔서 참고해보겠습니다. 10명의 개발자가 참여하는 프로젝트가 있다고 가정해보자. git에 기본 틀이 잡혀있는 코드가 올라와있고, 각 개발자가 자신의 로컬환경에 clone 받아서 작업을 시작한다. 그런데 개발이 끝날때까지 모든 개발자가 한 번도 중앙저장..
DevOps 란 무엇일까?
안녕하세요 코드짜는헬창입니다. 회사에서 프로젝트 진행하며 그동안 말을 들어봤지만 정확히 어떤 의미인지를 잘 알지 못하여 정리하면서 알아갈겸 포스팅 하도록 하겠습니다! # DevOps 개발(Development)과 운영(Operations)의 합성어로 소프트웨어 개발 방법론 중 하나입니다. 개발 담당자와 운영 담당자가 협력하여 개발을 진행하는 방식을 뜻하며, 그냥 협력하면 되지않나?? 라고 생각 할 수 있지만 원하는게 틀리다! 개발자는 새로운것을 하고 싶어하며 운영자는 안정성에 관심이 많기 때문입니다! # DevOps 특징 특징이라 하면 하나의 팀에서 운영과 개발이 나뉘지 않고 프로세스(개발 ~ 배포 ~ 운영) 단계를 하나의 팀이 관리를 한다는 점이 있습니다. 이로 인하여 DevOps 란 개발론 도입 전 ..
Load Blancer란 무엇일까???
안녕하세요 코드짜는헬창입니다. 오늘 포스팅 주제는 Load Blancer에 대하여 진행 해보겠습니다. # 일단 AWS에서 무엇인지 찾아봤습니다. Elastic Load Balancing이란 무엇입니까? Elastic Load Balancing은 여러 가용 영역에서 수신되는 애플리케이션 트래픽을 여러 EC2 인스턴스에 자동으로 분산합니다. 이렇게 하면 애플리케이션의 내결함성이 향상됩니다. 로드 밸런서는 클라이언트에 대해 단일 접점의 역할을 하여 애플리케이션의 가용성을 높입니다. 애플리케이션에 대한 요청의 전체적인 흐름을 방해하지 않고 필요에 따라 로드 밸런서에서 인스턴스를 추가 및 제거할 수 있습니다. 애플리케이션에 대한 트래픽이 시간에 따라 변화하므로 Elastic Load Balancing이 로드 밸런..
ORM과 JPA / Hibernate 란 무엇일까
안녕하세요 코드짜는헬창입니다. 이번엔 제목과 같이 ORM, JPA, Hibernate에 대하여 알아보겠습니다 # ORM 이란 무엇일까? ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 뜻을 가지고 있습니다. OOP에서 쓰이는 객체라는 개념을 구현한 클래스와 테이블이 맵핑을 이루는것을 이루는 것을 말합니다. 따라서 ORM을 이용하면 Query를 작성하지 않고 자바 코드로 데이터를 관리가 가능합니다. 예를들어 Item 이란 테이블에 데이터를 출력하기 위해선 SELECT * FROM Item 이라는 Query를 실행해야 했지만 ORM을 사용하면 item.findAll() 라는 메소드를 호출하면 데이터를 가져옵니다. 하지만 복잡한 구조에 대해서는 ORM으로 표현하는데 한계가 있습니..
WAS 와 웹 서버(Web server) 차이
안녕하세요 코드짜는헬창입니다. 오늘은 WAS 와 웹 서버에 관하여 포스팅 하겠습니다. 웹 서버(Web Server) 위키피디아 : 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 그래서 ? 클라이언트의 요청을 받아서 요청을 처리하고, 그 결과를 웹 클라이언트에게 응답하는 역할을 합니다. 주로 정적 페이지인 HTML, 이미지, CSS, 자바 스크립트 파일을 웹 클라이언트에 제공할 때 웹서버를 사용하며, 동적인 페이지 처리가 필요하다면 WAS서버에 처리를 넘깁니다. ex) Apache WAS(Web Application Server) 위키피디아 : 웹 애플리케이션 서버(Web Application Server, 약자 WAS)는 인터넷 상에서 ..
Maven vs Gradle 메이븐과 그래들의 차이!
안녕하세요! Maven(메이븐) 기반의 프로젝트를 진행하면서 집에선 Gradle(그래들)을 사용하여 두개 차이의 대하여 알아보다 포스팅 하게되었습니다. Maven 장점 및 특징 자바 전용 프로젝트 라이프사이클 관리 목적 빌드 도구이며 Apache Ant 불편함을 해결코자 만들어졌다. pom.xml을 이용한 정형화된 빌드 시스템(필요한 라이브러리를 정의해 놓으면 알아서 네트워크를 통하여 자동으로 다운받아줌) 간단한 설정을 통한 배포 관리가 가능 하다. Maven 설정파일 setting.xml - 메이븐을 빌드할 때 의존 관계에 있는 라이브러리, 플러그인을 중앙 저장소에서 개발자 PC로 다운로드 하는위치(로컬저장소)의 기본 설정 'USER_HOME/.m2/repository' 인데 settings.xml의 ..