전체 글 74

Openstack이란?

오픈스택 (Openstack) 오픈스택이란, 2010년 7월 클라우드 서비스 업체인 랙스페이스와 NASA가 처음 시작한 모든 타입의 비즈니스 운영에 필요한 스토리지, 네트워킹 및 컴퓨팅 리소스를 제공하는 오픈 소스 기반의 클라우드 Iaas 플랫폼 이다. IaaS를 쉽게 구축할 수 있는 플랫폼으로, 관리자는 데이터센터의 프로세싱, 스토리지, 네트워킹 자원들을 대시보드를 통해 제어할 수 있고, 사용자는 웹을 통해 필요한 기능을 사용할 수 있다. 참고) IaaS(Infrastructure as a Service, 서비스형 인프라), Paas(Platform as a Service, 서비스형 플랫폼), Saas: 서비스형 소프트웨어) Iaas 는 비즈니스 운영에 필요한 서버,네트워크,스토리지 등을 가상화 시켜서..

기타 2022.11.09

[Java/Spring] 빌드 관리 도구 Maven vs Gradle

1. 빌드 관리 도구란? 정의 개발을 하다보면 자주 보는 몇 가지 단어가 있다. 그 중에서 Maven과 Grable을 각각 스프링과 스프링부트에서 본적이 있을 것이다. 우선 이 둘은 빌드 관리 도구이다. 빌드란? 소스코드 파일을 컴파일에서 실행할 수 있는 가공물로 변환하는 과정 또는 결과물이다. 다시말하면 우리 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원등(.xml,jpa,jpg,properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물이라고 할 수 있다. 빌드 관리 도구란? 소스코드에서 어플리케이션 생성을 하면서 여러가지 라이브러리를 사용하는데, 이 빌드 관리 도구는 사용자가 직접 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리한다. 초..

Java 2022.11.09

DeFi 기반 금융 서비스 사례

DeFi(Decentralized Finance, 디파이)의 사전적 의미는 탈중앙화 금융 서비스이다. 그동안 금융은 중앙화된 금융기관 등에서 신뢰와 보증을 담보함으로써 이를 믿고 이용하는 형태였지만, 블록체인을 이용하는 경우 신뢰를 담보하는 보증 기관이 필요없게 되었다. 블록체인으로 인해 거래 내역이 기록된 다수의 원장이 여러 사람들에게 저장되어 보안성과 신뢰성을 확보하기 때문이다. 블록체인에서 작동하는 디지털자산의 이전을 모두 DeFi로 정의하기엔 어려우며, 기존 금융 서비스에 상응하는 기능을 하는 서비스를 DeFi라고 한다. 대표적인 기존의 금융 서비스는 예치와 송금, 대출 등이다. 이를 위해서는 이자를 정하고 예치와 대출에 대한 기한 및 이자율 등의 약속을 정하고 이행을 해야 한다. 블록체인에서는 ..

블록체인 2022.11.08

스마트 컨트랙트(Smart Contract)란?

스마트 컨트랙트란? 스마트 컨트랙트(smart contract)는 블록체인이 1세대에서 2세대로 넘어갈 수 있게 되는 가장 중요한 계기 중 하나로, 블록체인 기술을 활용해 제3의 인증기관 없이 개인 간 계약이 이루어질 수 있도록 하는 기술이다. 보다 자세히는 계약상의 급부와 반대급부를 프로토콜화하여 소프트웨어 및 하드웨어에 미리 저장하고 해당 계약을 이행하는 과정에서 조건 충족 여부에 대한 판단을 인간이 아닌 컴퓨터 등의 기계가 대신 실행함(자동화함)으로써 제3의 인증기관이 필요 없도록 하는 개념을 의미한다. 스마트 컨트랙트라는 용어는 사실 블록체인 상에서 처음 사용된 것은 아니다. 1994년에 닉 재보(Nick Szabo)의 논문에서 처음 제시되었으나 이론상으로만 그치고 실질적으로는 구현되지 못하였다...

블록체인 2022.11.08

디앱(DApp)이란?

디앱(DApp, Decentralized Application)이란? 탈중앙화 애플리케이션의 약자로 탈중앙화된 블록체인 플랫폼을 기반으로 작동하는 앱을 말한다. 예를 들어 안드로이드 같은 스마트폰 운영체제가 이더리움과 같은 '플랫폼'이라면 안드로이드용 스마트폰 앱이 '디앱'이라고 할 수 있다. 기존의 ‘중앙화 애플리케이션’에서는 중앙 서버의 데이터베이스에 정보를 저장하고 그 운용 역시 중앙 서버를 통해 이루어 졌다. 하지만, 디앱에는 중앙 서버 없이 서버가 가졌던 신뢰와 권한을 블록체인 네트워크에 참여하는 수많은 컴퓨터가 나눠 갖는다. 디앱이란 개념은 스마트 컨트랙트가 도입되면서 본격적으로 사용되기 시작하여 현재는 DAO, DeFi, NFT 마켓플레이스, P2E(Play-to-Earn) 등 다양한 형태로..

블록체인 2022.11.08

포크, 하드포크와 소프트 포크 (Fork, Hard Fork vs Soft Fork)

포크 (Fork) 블록체인 네트워크 참여자 간 의견충돌이 발생하여, 노드 사이에서도 의견 일치가 이루어지지 않을 경우, 블록체인 네트워크는 분기를 선택하게 된다. 즉, 일정 시점에서 생성되는 블록을 기점으로 하여 두 개의 독립된 블록체인으로 나뉘는 일을 포크(Fork) 라고 한다. 블록체인 환경이 업데이트 될 때에도 fork가 일어나는데, 새로운 환경을 만들기 위해 업데이트를 하게 되는 경우 기존의 규칙을 따르려는 블록과 새로운 규칙에 따라 기록되는 블록으로 포킹(Forking, 분기) 된다. fork에는 두 가지 종류가 있다. 소프트 포크 (Soft Fork) 소프트 포크는 기존의 규칙에서 큰 틀은 바꾸지 않고 부분적인 업데이트만 일어나기 때문에 포킹(Forking)된 블록끼리 호환이 가능하다. 쉽게 ..

블록체인 2022.11.08

Nonce란?

Nonce (논스: 임시값) 블록체인에서 목표값 이하의 블록 해시를 찾기 위해 임시로 사용하는 숫자이다. 임시값이라고도 한다. 블록을 대표하는 해시값인 블록해시를 생성하려면, 일정한 조건을 만족해야 한다. 그 일정한 조건이란, 블록 난이도에 따라 자동으로 설정된 '목표값'보다 더 작은 블록 해시값을 찾아야 한다는 제약조건이다. 해시는 랜덤하게 생성되기 때문에, 수없이 많은 연산을 반복해서 미리 정해진 목표값 이하의 해시값이 나오도록 해야 한다. 이때 랜덤한 해시값을 생성할 수 있도록 매번 임시값을 사용해야 하는데, 그 임시값이 바로 Nonce이다. 비트코인 Nonce 비트코인 nonce는 블록 헤더의 일부분을 구성하며, 이를 PoW(Power of Work) 작업증명 프로세스의 일부로 엔트로피를 제공하여..

블록체인 2022.11.08

블록체인이란?

블록체인의 의미 블록체인이란 P2P(Peer to Peer) 네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태로, 거래 정보를 담은 장부를 중앙 서버 한 곳에 저장하는 것이 아니라 블록체인 네트워크에 연결된 여러 컴퓨터에 저장 및 보관하는 기술로 다양한 분야에 활용이 가능한 기술이다. 블록체인은 분산원장 기술(DLT: Distributed Ledger Technology)이라고도 불리며, 이는 거래 정보를 기록한 원장 데이터를 중앙 서버가 아닌 참가자들이 공동으로 기록 및 관리하는 것을 의미한다. 블록체인은 분산처리와 암호화 기술을 동시에 적용하여 높은 보안성을 확보하는 한 편, 거래과정의 신속성과 투명성을 특징으로 한다. 보안성의 강화로 해커의 공격과 데이터의 왜곡, 그리고 기존 중앙집중 서버 방..

블록체인 2022.11.07

C++ vs Java vs C# 비교 (객체지향언어 비교)

JAVA, C++, C#은 모두 객체지향 언어(Object-Oriented Programming, OOP)이다. 논리와 연산, 제공하는 서비스는 비슷하다. 모든 언어는 각자의 개성과 특징이 있으며, 깊게 보면 탄생 배경에 비롯된 언어마다의 철학이 있다고 생각한다. C++과 JAVA, C# 또한 이러한 점에서 각자 다른 차이가 있다. C++(1983) C++의 초창기는 “C보다 더 좋은 언어”를 목적으로 개발되었다고 사료된다. 사례로는 C++은 C언어로 컴파일링 후 기계어로 다시 컴파일링되는 형식이었다. C는 마이크로 프로세서가 직접 기계어로 번역해주지만, C++은 C언어에서 실행 가능한 파일로 만들어주는 셈이었다. 현재는 객체지향적 언어로 손꼽히고 있지만 C와 유사한 면이 많기에 어떠한 응용프로그램, 임..

기타 2022.11.03

제어의 역전 (Inversion Of Control, IoC)

제어의 역전 (Inversion Of Control, IoC) Don't call us, we will call you. - 헐리우드 원칙(Hollywood Principle) 우리가 프레임워크 없이 개발할 때에는 객체의 생성, 설정, 초기화, 메소드 호출, 소멸(이하 객체의 생명주기)을 프로그래머가 직접 관리한다. 또한 전통적인 프로그래밍에서는 외부 라이브러리를 사용할 때, 개발자가 직접 외부 라이브러리를 호출하는 형태로 이용한다. 하지만, 프레임워크를 사용하면 객체의 생명 주기를 모두 프레임워크에 위임할 수 있다. 즉, 외부 라이브러리가 프로그래머가 작성한 코드를 호출하고, 흐름을 제어한다. 이와 같이 개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부에 위임하는 설계 원칙을 제어의 역전이라..

기타 2022.11.03