2022년 2월 10일에 시험을 치고 합격한 따끈따끈한 후기입니다.
AWS SAA-C02를 치시는 분들께 많은 도움이 되셨으면 좋겠습니다 : )

 

안녕? AWS 자격증은 처음이지?

 

SAA(Solution Architect Associate) 자격증?

Amazon Web Services, 줄여서 AWS는 아마존(Amazon)에서 제공하는 클라우드 서비스로 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라등 다양한 서비스를 제공하고 있습니다.

 

예전 같으면 기업에서 인터넷 서비스를 시작하기 위해 많은 비용을 들여 직접 서버를 구입하여 설치하거나, 고도의 네트워크 전문 지식을 갖춘 기술자를 고용했는데요! 이젠 AWS를 통해 언제 어디서든 클라우드 환경 속에서 서버를 설치하고 사용한 만큼 지불하는 시대가 되었습니다. 짝짝짝!

 

이러한 AWS에 대한 이해 정도와 서비스 구축 능력을 확인할 수 있는 도구로써 자격증이 생기게 되었고, SAA는 솔루션 아키택쳐라는 자격증의 Associate 레벨 되겠습니다! (상위 자격증은 Pro, 즉 SAP입니다)

 

자격증 뒤에 붙는 C02는 버전을 나타낸다고 합니다. 작년까지는 C01이였다고 하네요.

시험 응시 계기(Background)

작년 5월 내정(内定)을 받고 올해 일본에 있는 모 회사의 입사를 앞둔 저의 일상엔 일본의 외국인 입국금지가 계속되면서(무려 2년간...) 기약없는 기다림이 계속되고 있습니다... 회사에서 내준 과제는 이미 몇개월 전에 끝낸지 오래되었고, 가끔 코딩 외주나 발로란트 게임이나 하면서 지내고 있었습니다.

 

그래도 나름 새해가 밝았으니 올해의 목표를 정하였는데요! 그중 하나가 바로 AWS 관련 자격증!

 

전에 다니던 회사에서 AWS 클라우드 서비스를 다룬 경험이 있지만 기껏해야 EC2, S3, 람다, ELB, AutoScailing 등 간단한 서비스가 전부였고, 언젠가 전체 서비스에 대해 제대로 공부를 해두어야겠다고 생각(만)하고 있었죠...

 

마침 회사 슬랙(Slack)에서도 신입을 대상으로 SAA-C02 자격증을 취득해두는 것이 좋다고 꽤나 자주 언급하며, 복지 차원으로 한번의 합격 시 2회분의 응시료를 준다고 합니다!

 

치바현에 있지만 도쿄 디즈니랜드인건 함정

한번 응시하는데 18만원이라는 거금이 깨지는데 이걸 2회분이나 준다니...

한번에 합격하고 회사에서 받은 돈으로 도쿄 디즈니랜드의 입장권을 사는데에 사용하리라 하고 굳은 결심을 했습니다..!

 

스펙 및 공부 기간

- 4년제 컴퓨터 공학부

- AWS 실무경험 1년 정도

- TOEIC 885

 

21년 12월 28일 ~ 22년 2월 10일(시험)

-> 대략 1달, 하루 4시간(평일, 주말)

 

공부 방법

우선, 공부를 하기 전에 이전에 SAA 자격증을 취득한 사람들이 어떤 방식으로 공부를 했는지 파악하는 필요가 있었습니다. 구글에서 앞서 시험을 치신 많은 분들의 시험 후기가 있었으며 취합해서 분석한 결과, 공통적으로 유료 강의 사이트인 유데미(Udemy)에서 개념 강의를 먼저 수강한 뒤, examtopics라는 덤프문제 정리 사이트를 이용하는 것 같았습니다!

 

저 역시 우선적으로 개념을 잡기 위해서 유데미(Udemy)에서 Stephan Maarek의 SAA 2022 강의를 구매했습니다.

또한, 추가적으로 Jon Bonso의 연습 모의 시험 6개를 구매했는데요! 대체적으로 이 2개를 세트로 구매하는 게 국룰 패턴인 것 같습니다.

새해 맞이 행사로 Udemy에서 할인을 받을 수 있었고, 두 강의를 다 합해 32,000원에 구매할 수 있었어요.

Udemy의 경우 할인 행사를 많이 열기 때문에 sale기간에 구입하시는 게 좋아요.

(평소에 유료 강의를 가끔 듣는데 패스트캠퍼스랑 비교하면 가격이 착한 것 같네요)

 

1) 개념 정리

Stephan Maarek의 강의는 모두 영어로 되있어서 긴장했는데 다행히 그렇게까지 어려운 영어는 아니였습니다.

또한, Udemy 자체의 동영상 플레이어에서 영어 자막을 표시해주니 자막을 켜놓고 들을 수 있었어요.

 

영상이 다 합쳐서 한 360개 정도 되는 것 같고 각 섹션마다 1시간~1시간 30분 정도 소요되었습니다. 들어야 할 양이 좀 많기도 하고 듣다보면 잠이와서... 매일 3개 Section씩 분량을 정하고 빠르게 들었습니다. 처음에는 정속도로 듣다가 좀 느린 것 같아 속도를 조정했는데 대충 1.7x배속으로 들어도 문제는 없는 듯 합니다.

 

또한, 각 섹션 영상이 끝날 때마다 내용 정리를 위한 8-20개 정도의 퀴즈를 제공합니다.

스스로 정확하게 개념을 파악하고 있는지 알 수 있어서 이 부분이 정말 좋았던 것 같습니다!

 

기본 개념 강의를 다 듣는데 13일 정도 걸렸으며, 강의 마지막에는 지금까지의 전체 개념을 적용시켜 풀 수 있는 1개의 모의 시험을 제공합니다.

 

(분명 강의에서 다 들은 개념인데 막상 모의 시험을 치니 점수가 왜 이렇지...?)

 

2) examtopics 덤프 문제

개념 강의를 들었으면 다음으로는 덤프 문제입니다. 

덤프 문제는 examtopics 라는 사이트를 이용했습니다.

다른 국제 자격증(CCNA, 오라클 등)에 관한 덤프도 모여져 있는 것 같았습니다.

https://www.examtopics.com/exams/amazon/aws-certified-solutions-architect-associate-saa-c02/

 

Free & Accurate Amazon AWS Certified Solutions Architect - Associate SAA-C02 Practice Questions | ExamTopics

 

www.examtopics.com

 

 

captcha

회원가입을 하던 안하던 큰 차이는 없었고, 한 페이지당 10개씩 문제가 표시됩니다.

각 페이지마다 captcha가 있어서 좀 귀찮은 건 단점이네요.

 

디스크 조각 모음

전체적인 개념 사이 사이에 디테일한 개념을 머리에 각인 시키려면 문제를 최대한 많이 풀어보는 수 밖에 없습니다.

(저는 이 과정이 마치 디스크의 조각 모음 작업처럼 느껴서 조각 모음이라고 설명하곤 합니다)

examtopics 에는 22년 2월을 기준으로 577개의 덤프 문제가 있으며, 저는 대략 400 문제 정도 풀었는데요.

문제의 양이 너무 많아서 메모장에 한 문제씩 정리하면서 풀었더니 그나마 편했습니다.

특히 정답 중에서도 오답이 너무 많아서 문제 밑에 달린 댓글을 꼭 보는 것을 추천 드립니다!!!

 

메모장에 정리한 답들

문제를 풀다보면 헷갈리거나 기초적인 개념 문제가 많이 나오기 때문에, 각 서비스의 특징을 외우는 데에도 도움이 됩니다. 가령 S3 스토리지 클래스(S3 Standard, S3 Intelligent-Tiering, S3 Standard-IA, S3 One Zone-IA) 특징, EBS 볼륨 유형(General, Provisioned) 등 어떤 상황이 주어졌을 때 무엇이 가장 비용-효율(cost-effect)적인지 물어보는 문제가 자주 나와서 문제를 풀다보니 자연스레 외워지게 되었습니다.

 

다른 사람들의 후기를 보아도 300~400문제 정도는 기본으로 풀어보시는 것 같습니다.

시험에 출제되는 체감 비중은 20%~30%라는 사람도 있고, 90% 정도라는 사람도 있습니다.

저 역시 실제 시험에서는 이곳에서 본 문제가 많이 나오는 것을 경험했습니다!

아무튼 비슷한 문제가 자주 출제되고 무조건 시험에 도움이 되니 꼭 푸는 것을 추천드립니다!!!

 

3) Udemy 모의 시험 6회분

개념을 머릿 속에 집어 넣고 덤프 문제를 풀다보면 실제 시험에서 어떤 점수가 나올지, 시험의 느낌은 어떤지 궁금할 때가 있습니다.

그럴 때에는 모의 시험을 쳐보면 많은 도움이 됩니다.

 

저의 경우 Udemy에서 추가적으로 구매한 6회분 모의 시험을 풀었는데요! 다른 유료 한글 덤프도 있는 것 같지만 모의 시험 문제로는 이게 제일 적당한 것 같습니다. 가격도 싸구요. 모의 시험 6회분을 꼭 푸실 필요없이 examtopics만으로도 충분하다는 사람들도 있으니 이 부분은 스스로 판단하셔서 선택하시면 될 것 같습니다.

 

Udemy의 모의 시험은 꽤나 어려웠는데요...

72% 이상이 합격인데 총 6개의 제 시험 성적은

 

50% 49% 64% 56% 67% 70%

 

으로

한번도 합격한 적이 없...

(조금 어려운 거 같아요 이거)

 

외국분들의 후기를 보면 80% 이상 맞추면 시험칠 준비가 된 것이라고 합니다!

 

개인적으로 유데미 모의 시험과 examtopics 덤프 문제, 실제 시험 문제의 난이도를 비교했을 때

유데미 모의시험 > 실제 시험 > examtopics 인 것 같습니다!

 

커뮤니티 및 자료

Redit - AWSCertifications

시험을 치는 날이 다가올수록 가장 최신의 정보가 필요한데 AWS Certifications의 레딧(Redit)이 정보 공유가 가장 활발합니다. 레딧에서 SAA 자격증을 합격한 분들께서 시험에 관한 난이도와 어떤 문제가 출제 되었는지 등 전세계의 유저분들께서 따끈따끈한 정보를 공유해주시기 때문에 많은 도움이 되었어요!

https://www.reddit.com/r/AWSCertifications/

 

AWS Certifications • r/AWSCertifications

This subreddit focuses solely on AWS Certifications. Bring in your discussions, questions, opinions, news and comments around AWS certifications...

www.reddit.com

 

네이버 아라공 카페

다음으로는 네이버 카페에 있는 아라공(아이티 라이센스 공부하기) 카페입니다. 저는 이 카페를 시험을 5일 정도 앞둔 시점에야 알게 되었는데요! 살펴보니 유저분들끼리 SAA관련 덤프를 공유하시는 것 같았습니다! 덤프 v24.75, v26.35 등 버전이 있는 덤프가 공유되어 있는 듯한데...저는 이 카페에 있는 덤프를 따로 쓰지는 않았지만 공부에 참고하시는 것도 좋을 듯합니다.

https://cafe.naver.com/sdk800402

 

아라공 Cafe - 무료교육 정보 /... : 네이버 카페

국제공인 IT자격증 정보카페, 기출문제, 시험후기, 무료교육 정보를 한눈에~

cafe.naver.com

 

공식 FAQ 문서

가장 정확하고 자세한 자료는 역시 AWS의 공식 홈페이지입니다! 공식 홈페이지에서 각 서비스의 FAQ를 찾아볼 수 있는데요! 사람들이 서비스에 가장 많이 질문했던 것이나(그만큼 중요) "우리는 이런 기능까지 지원해" 라고 어필하는 내용들을 확인할 수 있습니다. 저의 경우 FAQ 문서는 4~5회 정도 정독하였습니다!

https://aws.amazon.com/ko/faqs/

 

AWS FAQ - 제품 및 개념에 대한 FAQ - AWS

다음 제품 및 기술 FAQ 목록에서 원하는 항목을 선택하세요. FAQ를 살펴보면 흔히 물어보는 질문에 대한 답변을 확인할 수 있습니다. 아래 서비스 중 하나를 처음 사용하는 고객이라면 관련 도움

aws.amazon.com

제가 주로 봤던 서비스는 아래와 같습니다.

CloudFront, DynamoDB, DAX , AWS GLUE, RDS, Aurora, AWS Amplify, EC2, EBS, EFS, S3, Lambda/Lambda@Edge, EKS, CloudTrail, AWS Step Function, AWS WAF, EFA, AWS SWF, X-Ray, Data Sync, AWS CloudHSM, ECS, Kinesis data stream/firehorse/analysis, Route53, VPC, SQS, SNS, IAM, Inspector, AWS Backup, Global Storage

특히, 문제를 푸시다가 특정 서비스의 기능이 헷갈리는 경우나 시험치기 전날에 보시면 도움이 될 것 같아요!

 

참고 블로그 및 자료

 

How I Passed AWS Solutions Architect Associate (SAA-C02) in 2021 | The Startup (medium.com)

 

How I Passed AWS Solutions Architect Associate (SAA-C02) in 2021

An FAQ about preparing and taking the AWS Solutions Architect Associate exam.

medium.com

대학생도 딸 수 있는 AWS Solutions Architect Associate 시험 후기 | by SangHyo Han | Medium

 

대학생도 딸 수 있는 AWS Solutions Architect Associate 시험 후기

AWS SA 자격증을 준비하면서..

medium.com

 

AWS Solutions Architect - Associate (SAA) 자격 취득 후기 (musma.github.io)

 

AWS Solutions Architect - Associate (SAA) 자격 취득 후기

목차 서론 새해 목표: AWS 공인 자격 취득 본론 Solutions Architect - Associate는 어떤 자격인가? 시험 접수 AWS Tr...

musma.github.io

 

 

신청 및 시험 과정(PSI 온라인)

AWS 자격증 시험은 아래 사이트에서 하실 수 있습니다.

https://aws.amazon.com/ko/certification/certification-prep/testing/

 

AWS Certification 시험 일정 예약

AWS Certification은 AWS 클라우드에 대한 지식과 기술, 전문성을 검증합니다. 지원자는 시험을 치르고 기본, 역할 기반 또는 전문 분야 자격증 중 하나를 취득합니다. AWS Certification 취득에 대한 엄격

aws.amazon.com

국내에서 오프라인 시험장은 서울에 두 곳이 있습니다. 코시국 전에는 부산에도 있었던 걸로 알고 있는데 왜인지 검색이 되지 않더라구요...저는 지방에 살고 있기 때문에 서울까지 가서 시험을 보기가 쉽지 않았고(사실 귀찮은 게 100%), 집에서 온라인으로 시험을 보기로 했습니다!

 

온라인 시험의 대행사는 PSI, Pearson VUE 이렇게 두가지가 있는데요! 저는 PSI를 선택했습니다.

 

왜냐구요? 딱히 이유는 없습니다..!ㅋㅋ

 

시험을 치기 전에 비영어권이라면 추가 시간(+30분)을 받을 수 있다고 해서 이것도 신청했습니다!

이렇게 되면 기존 시험기간 130분에 + 30분, 총 160분(2시간 40분) 동안 시험을 칠 수 있는데요!

2시간 40분에 65문제면 정말 여유롭게 시험을 칠 수 있게되니, 꼭 꼭 연장 신청하시는 게 좋아요.

'시험 편의 지원 요청' 클릭
아래 버튼을 클릭 한 뒤, 'ESL +30 MINUTES'를 신청하시면 됩니다.

 

보다 자세한 시험 신청 방법은 다른 분의 블로그로 대체하겠습니다..!

https://lsmman.tistory.com/36

 

시험을 신청하고 결제까지 완료하면 아래처럼 메일이 날라오게 됩니다.

PSI로부터 날라온 메일

 

온라인 시험 특성상 시험을 치기 위한 주변 환경이 매우 중요한데요!

PSI 공식 홈페이지에서 요구하는 시험의 준비 조건은 아래와 같습니다.

- 시험을 시작하기 전에 사진이 부착된 정부 발급 신분증을 제시해야 합니다.
- 신분증에는 로마자(영문)로 된 이름이 있어야 합니다.
- 원격 시험 감독관이 전달한 모든 지침을 따라야 합니다.
- 본인은 시험 기간 내내 모든 개인 물품을 손이 닿지 않는 곳에 보관해야 하며 시험 중에는 어떠한 경우에도 소지하거나 접근할 수 없음을 이해합니다.
- 개인 물품에는 전자 기기(휴대폰 포함), 시계, 카메라 또는 기타 녹음 장비, 가방, 서류 가방, 지갑, 책, 메모 등이 포함됩니다.
- 시험 중에는 메모 및/또는 문서가 허용되지 않습니다.메모장이나 화이트 보드는 허용되지 않습니다.
- 시험 중에는 음식이나 음료 섭취가 허용되지 않습니다.
- 의료 목적으로 음식이나 음료 섭취가 필요한 경우 Certification 계정 내에서 조정을 요청하고 시험을 취소한 뒤 시험 센터에서 시험을 예약하세요.
- AWS Certification 시험의 내용 또는 AWS Certification 시험과 관련하여 제공된 기타 자료를 공개하거나 배포할 수 없습니다.
- 본인은 시험 기간 동안 기타 휴식 시간을 포함하여 화장실이나 이유를 불믄하고 시험 공간에서 일어나거나 나갈 수 없음을 이해합니다.
- 시험 시간 동안 계속 연결을 유지할 수 있도록 컴퓨터를 전원에 연결하세요.
- 시험을 시작하기 전에 시험에 사용할 컴퓨터의 모든 애플리케이션을 종료해야 합니다.
- 본인은 온라인 감독 시험을 볼 때 책상 아래와 네 개의 벽을 모두 보여줄 수 있는 카메라가 있어야 한다는 것을 이해합니다.
- 본인은 시험 공간의 모든 문을 닫아야 한다는 것을 이해합니다.
- 본인은 종교적인 이유 외에는 모자를 착용할 수 없음을 이해합니다.

 

따라서 저는 시험 전날 책상의 위치를 옮기고 카메라가 제 방 4면을 잘 비출 수 있게끔 셋팅해두었습니다!

카메라 뿐만 아니라 주변에 소리를 확인하는 마이크도 필수적으로 있어야 하구요.

신분을 확인할 수 있는 것으로는 영문 이름과 얼굴 사진이 있는 여권을 챙겼습니다.

 

또한, 시험을 치기 전에 원격 접속이 가능한 팀뷰어나 영상 녹화 프로그램 등을 꺼둬야 합니다.

저는 전부 꺼둔 줄 알고 시험에 들어갔는데, 예전에 게임을 녹화하기 위해 깔아둔 NVIDIA 프로그램이 프로세스에 감지된다고 끄라고 뜨더라구요...

 

집에서 치는 시험인 만큼 주변에 가족이나 반려견이 시험을 방해하지 못하도록 미리 말해두는 것도 좋을 것 같습니다!

시험 치는 도중 다른 누군가가 카메라에 들어오면 바로 세션이 종료된다고 하더라구요...

(18만원은 그대로 공중분해가 되는 마법)

 

당일 시험

당일 시험이 다가오면 시험 시간보다 30분 일찍 접속하셔야 합니다.

저는 오후 4시에 시험을 신청했지만 30분 전인 3시 30분에 접속하였습니다!

 

PSI에서 시험 시작을 누르면 전용 브라우저를 설치하게 되는데요! 이때 브라우저 이외의 다른 프로그램들이 켜져 있는지 확인하게 됩니다.

또한, 캠코더로 준비된 여권 사진과 셀카(selfi)를 찍게 되니 신분증을 꼭 지참하세요!

 

PSI 공식 홈페이지에서 제공하는 시험 방식

브라우저 설치와 신분 확인 이후에는 주변 환경에 대해 확인하기 위해 감독관과 대화를 하게 됩니다. 감독관분께서 바로 들어오시는 것이 아니라 어느정도는 조금 기다려야 하는데요. 대충 15분 이내에 챗팅으로 연락이 온다고 하니 그때까지 기다리시면 되겠습니다.  

 

이후 위 영상에서처럼 시험 감독관 분과 연결이 되면 챗팅을 통해 주변 환경에 대해 질문을 하십니다!

 

"방이 잘보이도록 카메라를 셋팅해줘"

"책상 위에 뭐가 올려져 있는지 보여줘"

"휴대폰 위치가 어디있는 지 알려줘"

"책상 밑과 천장을 보여줄래?"

"손목과 귀를 자세히 보여줄래?"

 

모든 질문을 오른쪽에 위치한 챗팅창을 통해 영어로 물어보시는데요...!

그렇게 어려운 내용은 아니니 빠르게 감독관님께 시험 준비를 위한 확인을 시켜주시면 되겠습니다ㅎㅎ

온라인 시험을 치신 다른 분들에 후기를 보면 너무 응답이 느렸다 등의 부정적인 후기도 있었지만 저는 별 무리없이 끝났던 것 같습니다. 한 3분 만에 끝난 것 같아요.

 

감독관의 확인이 완료되면 시험을 시작하겠냐는 버튼이 뜨는데 클릭하시면 곧바로 시험이 시작됩니다.

 

떨리는 마음으로 시험을 시작했습니다!

(행여 떨어지면 18만원이 그대로 날라가니 심장이 쿵쾅거리더라구요..)

 

시험 체감 난이도

시험은 총 65문제로 많지도 않고 그렇다고 적지도 않은 양입니다.

첫번째 문제부터 20번 문제까지 몇 가지 헷갈리는 것은 플래그(flag)표시는 해두었지만 크게 어려움 없이 무난히 풀어냈습니다!

뒤쪽에 어려운 문제가 나오나보다 싶어서 긴장했는데 뒤에도 그다지 어렵지 않아서 놀랐네요;;

 

시험 문제는 대체로 아래와 같은데요!

 

"지금 상황 또는 특정 기능을 구현함에 있어 비용을 최적화하기 위해서는 어떤 옵션이 적절할까"

"추후에 사용자가 더 많아질 것 같아서 성능이 저하된다면 어떻게 처리해야 할까"

"서비스를 운영중인데 보안을 위해서는 어떻게 하는 것이 가장 안전할까" 등등

 

저의 경우 VPC와 관련된 문제가 많이 나왔습니다!

 

레딧(Redit) 커뮤니티에서도 가장 최근 시험 정보에서도 VPC 관련 문제가 많았다는 글을 본 적이 있는데요!

제가 개인적으로 시험에서 생각나는 문제는 private subnat에 위치한 EC2 인스턴스가 외부의 인터넷을 이용하면 어떻게 하는게 좋을지라는 문제에서 답으로 public subnet에  NAT gateway를 통해 접근할 것인지, 아니면 egress-only internet gateway를 사용할 것인지가 나왔습니다.

보통이면 NAT gateway를 떠올리겠지만 IPv6라는 조건이 있어서 후자를 선택했습니다.

 

뿐만 아니라 S3와 CloudFront 간의 보안을 높히기 위해 OAI 를 사용한다던가, EC2 auto scaling의 가용성을 위해 최대 몇 개의 인스턴스를 AZ에 얼마나 배치해야 하는가 등등 앞에서 모의 시험으로 만난 문제들 보다는 비교적 쉬운 내용이 나왔습니다.

 

대체적으로는 기초적인 개념을 물어보는 문제가 많았으나, 그렇다고 개념 강의 하나만 보고 시험을 치기는 어려울 것 같습니다.

특히, AWS에는 정말 많은 서비스가 존재하기 때문에 헷갈릴 가능성이 높습니다!

그렇기 때문에 각 서비스의 특징과 비슷한 서비스의 차이점(SNS와 SQS의 차이, RDS, DynamoDB의 특성 등등)를 명확하게 정리하시고 시험에 들어가시는 것을 추천드립니다!

 

 

 

최종 합격

 

https://www.credly.com/badges/22611712-16d1-47e9-bb6b-86758520157e/linked_in

 

AWS Certified Solutions Architect – Associate was issued by Amazon Web Services Training and Certification to HONG SEONGCHAN.

Earners of this certification have a comprehensive understanding of AWS services and technologies. They demonstrated the ability to build secure and robust solutions using architectural design principles based on customer requirements. Badge owners are abl

www.credly.com

 

시험은 총 1000점에서 720점을 넘겨야 합격입니다.

 

65문제를 다푸는데 40분 정도 걸렸고 남은 시간은 2시간이나 되었습니다...

(생각보다 빨리 풀어 시간이 많이 남더라구요)

정말 확실한 문제말고 헷갈리는 문제들만 플래그(flag)표시를 해두었는데 대략 8개 정도가 되었습니다.

합격을 위해서는 15개 이상만 안 틀리면 되니 이대로 제출해도 될 것 같아 그대로 제출했습니다!

 

이 시험은 시험이 끝나면 합격 결과가 나오는 잔인한 시험인데요...

 

다행히 저는 '합격' 이라는 글자를 보고 안도할 수 있었습니다!

 

 

 

마치며

이거 빌리는데 얼마일까요? 맞춰보세요

새해가 시작되고 한달 동안 공부해서 이렇게 AWS의 자격증 중 하나인 SAA를 취득하게 너무 기쁩니다ㅎㅎ 이번에 공부를 하면서 AWS에 관한 서비스를 전보다는 많이 알게 되었는데요! AWS가 이런 서비스도 있다고? 이게 이렇게 된다고? 하는 것이 정말 많아 재밌게 공부할 수 있었던 것 같습니다. (snowmobile이라는 거대한 트럭은 정말 놀랐습니다ㄷㄷ) 또한, 전에 개발했던 서비스나 향후 프로젝트에 대해서도 Cloud를 적용했을 때 더 좋을 것 같다는 생각이 들었습니다. 아직도 배워야 할 내용은 많지만 계속해서 공부하여 향후에는 상위 자격인 Pro를 취득하기 위해 도전해볼 생각입니다! (합격 시 다음 시험에서 할인 받을 수 있는 50% 쿠폰을 지급하더라구요) 계속해서 화이팅하겠습니다!

 

여담

당근마켓의 AWS Lambda@Edge를 이용한 이미지 처리

중고 거래 플랫폼으로 인기있는 당근마켓에서는 AWS 서비스 중 하나인 Lambda@Edge를 통해 이미지 리사이징을 처리한다고 합니다. 기존의 썸네일 처리 방식은 S3에 저장하였지만 요청에 따라 Lambda@Edge에서 작업하고 또 CDN의 캐싱 처리까지 할 수 있어서 큰 비용절감을 할 수 있었다고 합니다! 한번 읽어보시면 좋을 것 같아요ㅎㅎ

 

AWS Lambda@Edge에서 실시간 이미지 리사이즈 & WebP 형식으로 변환

안녕하세요, 당근마켓에서 백엔드 서버 개발 인턴으로 근무하고 있는 Marco입니다. 저는 이번에 당근마켓 서비스의 썸네일 생성 방식을 On-The-Fly 이미지 리사이징으로 새롭게 구현하였습니다. 이

medium.com

 

 

 

일본 클래스메소드(Classmethod, Inc.) 회사

https://dev.classmethod.jp/

 

クラスメソッド発「やってみた」系技術メディア | DevelopersIO

DevelopersIOは、AWS、iOS/Androidアプリ、ビッグデータ、Alexa等の最新技術情報からリモートワークや働き方に関する記事まで多彩なトピックを紹介するクラスメソッドのオウンドメディアです。

dev.classmethod.jp

앞으로 일본에서 일하게 되어 개인적인 호기심에 일본 내 AWS 클라우드를 전문적으로 다루는 회사에 대해 찾아보게 되었는데요! 클래스메소드(クラスメソッド株式会社) 라는 회사를 발견하게 되었습니다. 일본 최고의 AWS 프리미어 파트너사로서 2018년에는 올해의 AWS 컨설팅 파트너상을 수상한 만큼, 일본 최고의 AWS 엔지니어들이 모여서 근무하고 있는 기업이라고 합니다. 사내 커뮤니티 사이트에는 한국분들도 꽤 계시는 것 같습니다ㅎㅎ 가끔 기술 블로그나 Qilta를 찾아보곤 하는데 항상 열심히 공부하시는 다른 분들을 보면 저 역시 자극을 받네요.

 

 

 

 

링크드인(LinkedIn) 자격증 등록!

 

 

링크드인 자격증/수료증

드디어 링크드인(LinkedIn)에 당당하게 AWS 자격증을 등록하였습니다!

정보처리기사 이후 연속으로 취득하는 두번째 자격증이 되겠습니다...

(조금 뜬금 없지만 링크드인을 보다보니 저희 학교 학과선배님 중에 AWS에서 근무하시는 선배님이 계시더라구요;ㅋㅋ)

앞으로 공부할 것도 많고 가야할 길도 험하지만 화이팅입니다!

 

글을 쓰기 앞서...

내년부터 일본에서 생활하게 되어 현재 내 명의로 갖고 있는 주식이 일본에 거주하게 됨에 따라

어떠한 조세법을 따르는 지 찾아보았다. 

 

나는 이중거주자에는 해당하지 않아 이중거주에 대한 관련 내용은 없으며,

100% 정확한 내용이 아닐 수 있으니 참고 정도로만 해두면 좋을 듯 하다.

 

주로 찾아본 자료는 국세청에서 2020년 5월 발간한 '재일 납세자가 알아야 할 한일 세금 상식' 과

국세법령정보시스템이다.


1. 거주자와 비거주자의 판정

우선 일본에서 납세의무를 가진 거주자의 정의는 아래와 같다.

 

거주자 : 국적과 관계없이 일본 국내주소를 가지고 있거나 현재까지 계속하여 1년 이상 거소(居所)를 가진 개인.

비거주자 : 거주자 이외의 개인

 

일본은 거주자 내에서도 영주자인지 비영주자인지를 분리하여 납세 범위를 축소하는 규정을 두고 있다.

납세의무자 범위
거주자 비영주자 일본 국적을 가지지 않고, 과거 10년 이내의 기간에 일본 국내에 주소 또는 거소를 가진 기간의 합계가 5년 이하인 자
비영주자 이외의 거주자 일본 국내에 주소를 가지거나 현재까지 계속해서 1년 이상 거소를 가진 개인 중 비영주자 이외의 자

 

이 기준이 영주권(체류 기한의 제약 없이 일본에 거주할 수 있게 되는 체류 자격)을 가지고 있는지에 따라 나뉘지 않고

일본 국적을 가지지 않은 거주자로서 과거 10년 이내에 일본 국내에 주소 또는 거소를 가지고 있던 기간의 합계가 5년을 넘는 경우, 5년이 되는 날까지는 비영주자, 그 익일 이후에는 비영주자 이외의 거주자가 된다.

 

즉, 직접 신청해서 받는 영주권 발행 여부와는 상관 없이 위 기간의 합이 5년이 되는지가 기준.

일본에 6년 이상 거주하며 영주권이 없는 사람이나, 10년 이상 살았지만 영주권이 없는 사람이나

똑같은 비영주자 이외의 거주자가 된다.

 

참고로 영주권 발급 시기는 원칙적으로 10년 이상이다.

 

2. 거주의 판정

주소는 개인 생활의 근거지를 말하며, 이는 객관적 사실에 의해서 판정한다고 한다. 

개인의 생활 중심이 어딘지를 기준으로 판정하며, 일정한 경우에는 주소 판정을 위해 직업 등을 기본으로

"주소의 추정"을 실시한다.

 

일본 국내에 거주하게 된 개인이 다음의 어느 하나에 해당하는 경우에는

일본 내의 주소를 가진 것으로 추정한다. (소득령 §14)

① 일본 국내에서 계속해서 1년 이상 거주할 것을 통상적으로 필요로 하는 직업을 가진 경우

② 일본 국적을 가지고 있고, 일본 국내에서 생계를 같이 하는 배우자 및 그 밖의 친족이 있는 사실 및 그 밖의 직업 및 자산 유무 등의 상황에 비추어 일본 국내에서 계속하여 1년 이상 거주하는 것으로 추정하기에 충분한 사실이 있는 경우 

 

3. 거주기간의 계산

거주 기간은 입국일의 다음 날부터 기산하여 기간을 계산한다고 한다. (소득 기본통칙 2-4)

 

그렇다면 일본에서 거주하다 잠시 한국에 방문했다가 재입국한 경우, 국외 체류 기간은 어떻게 할까?

 

일본 국내에 거소를 가지고 있던 자가 국외로 나가 다시 입국한 경우 국외에 있던 기간동안 일본 국내에 배우자 및 기타 생계를 같이 할 친족을 남기거나 재입국 후 기거할 예정인 가옥이나 호텔의 객실 등을 보유하거나 생활용 동산을 예탁한 사실이 있는 등 명백히 그 국외로 간 목적이 일시적이라고 인정되는 때에는 해당 재외기간에도 계속 일본 국내에 거소를 두는 것으로 본다(소득기본통칙2-2).

 

즉, 일본 직장에서 일하다가 한국 명절에 맞춰 휴가로 한국을 일시적으로 방문했다가

일본에 재입국해도 그 기간을 일본 국내에 거주했던 기간으로 포함한다.

4. 납세의 의무

위에서는 거주자와 거주자의 세부 정의를 살펴보았다. 

 

그렇다면 일본의 거주자가 한국 국내의 주식에 투자하여 얻는 이익은 세법상 어떻게 분류하며,

한국 또는 일본에서 어떤 납세의 의무를 가질까?

 

2020년 5월 국세청에서 쓴 내용을 그대로 가져왔다.

한국의 경우 양도소득세에 관한 내용은 2023년부터 변화가 있으므로 이를 꼭 참고하길.

 

우선 한국이다.

한국 국내의 주식을 소유하고 있는 경우 동 주식 소유자에게 법인(주식발행법인)이 이익이나 잉여금의 일부를 분배하는 경우가 있는데(= 주식 배당금을 말하는 듯) 동 분배금은 배당소득(Dividend)에 해당된다. 일본의 거주자(개인)가 배당을 받는 경우 배당을 지급하는 법인은 한일조세 조약에 따라 15%(소득세 및 지방소득세)를 원천징수하며, 이로서 한국 내 사업장이 있는 등 특별한 경우를 제외하고는 한국 내 납세의무는 종결된다.

주식을 양도하는 경우 양도가액에서 취득가액과 필요경비를 뺀 차액은 Capital Gain에 해당되나, 한국 증권시장에 상장된 주식으로서 장내에서 소액주주가 양도하는 주식의 양도소득과 일부 비상장주식에 대하여는 한국 세법상 양도소득세가 과세되지 않는다.

라고 되어 있는데...2020년 자료라 그런 것 같다. 현재 국내 주식 거래 시 대주주가 아닌 소액주주에는 양도소득세를 부과하지만 세법 개정안에 따르면 2023년부터는 주식 보유액이나 지분율에 상관없이 국내 주식을 통한 연간 매매 차익이 5000만원 이상이면 양도세율 20%(3억원 초과 시 25%)가 적용된다!!! 즉, 국내 주식 투자로 연 6000만원을 벌었다면 5000만원을 제외한 나머지 1000만원의 20%인 200만원을 세금으로 내야 한다.

 

더불어 한국 세법상 주식양도소득세가 과세되는 경우라 하더라도 일본 거주자인 경우에는 한일조세조약 제13조가 적용되어 25% 이상의 지분을 보유하며 1년에 5% 이상의 지분을 양도하는 경우가 아니라면 한국에서 양도소득세가 과세되지 않는다.

따라서 일본의 거주자가 한국의 주식에 투자하여 양도소득 등을 얻은 경우에는 한일조세조약에 따라 한국에서 원천징수 등의 납세의무를 진다.
한일조세조약 제13조 [1999.11.22]

2.일방체약국(= 내 기준으로 '일본'을 말함)의 거주자가 타방체약국(한국)의 거주자인 법인이 발행한 주식의 양도로부터 얻는 이득에 대하여는 다음의 경우 타방체약국(일본)에서 과세할 수 있다.

   가.양도자에 의하여 획득되거나 소유된 주식이 (다른 특수관계인에 의하여 획득되거나 소유된 주식과 합산하여) 양도가 발생한 과세연도중 어느 때라도 동 법인이 발행한 총 주식의 최소한 25퍼센트인 경우

   나.양도자 그리고 그러한 특수관계인에 의하여 과세연도동안 양도된 총주식이 동 법인이 발행한 총 주식의 최소한 5퍼센트인 경우

 

 

다음으로 일본의 경우이다.

한편, 일본 거주자는 전 세계 소득에 대하여 일본에서 납세의무가 있으므로 한국에서 배당소득 또는 주식양도소득이 발생한 경우(비영주 거주자인 경우 해당 소득이 일본 국내로 송금된 경우에만) 다음 해 3월 15일까지 동 이자소득을 일본 내의 소득과 합산하여 일본 국세청에 신고하여야 한다. 일본에서 소득세액을 계산할 때 한국에서 납부(원천징수)한 세액은 외국납부세액으로 소득세액에서 공제 받을 수 있다. 다만, 배당소득, 양도소득을 포함하여 다른 확정신고대상의 소득금액 합계가 20만엔이하일 때는 확정신고 의무가 면제된다.

 

 

5. 그래서 결론이 뭔데!

 

세법은 너무 어렵다...

이공계 + 사회 초년생인 나에게는 더 더욱 어려운 거 같다.

 

 

일본에 거주한 기간이 5년이 되지 않은 비영주자는 주식 수익금이 일본 국내로 송금된 경우에만 다음 해 3월 15일까지 이자 소득을 일본 내의 소득과 합산하여 국세청에 신고해야 한다!

거주 기간이 5년이 넘는 비영주자 이외의 거주자는 신고가 의무.

 

이때, 일본에서 소득세액을 계산할 때 한국에서 납부(원천징수)한 세액은 외국납부세액으로 소득세액에서 공제가 가능하다!

 

배당금을 받거나 주식으로 수익을 얻은 돈의 합계가 20만엔이 안되면 신고하지 않아도 된다!

 

2023년부터 바뀌는 한국의 양도소득세법도 알아둘 필요가 있다~

Pagination이 대체 뭘까?

책의 page를 하나하나씩 넘기다 보면 잠이 옴...

클라이언트는 서버에서 데이터를 받을 때 양이 많을 경우, 전체를 한번에 받지 않고 마치 책의 한 페이지(page)를 넘기는 것처럼 page를 나누어서 전달받게 되는데, 이를 처리하는 작업을 페이지네이션(Pagination)이라고 한다.  Pagination은 보통 아래의 두가지 방법을 사용한다.

 

1. 오프셋 기반(Offset-based) 페이지네이션

           - 데이터베이스에서 page를 끊어 읽을 단위인 offset을 조절하여 가져옴

           - 예) SELECT title FROM 'board' ORDER BY id DESC LIMIT 10, 20

 

 

2. 커서 기반(Cursor-based) 페이지네이션

            - 클라이언트에서 읽은 마지막 row의 다음 n개의 row들을 가져옴

 

 

오프셋 기반의 페이지네이션의 경우, 구현이 매우 쉽고 가장 일반적인 방법이 되겠다. 데이터들을 일정한 갯수씩 잘라 1~10를 1page로, 11~20를 2page로 지정해 해당 page를 다 읽으면 다음 페이지를 가져오는 식이다.

 

이때, 미리 잘라둔 페이지를 가져오는 것이 아니라. 다음 페이지를 요청할 때마다 자르기 때문에 이전의 데이터가 중복될 경우가 있다. 예를 들어1page에서 10개까지 다 읽고 2page를 읽으려고 하기 전에 새로운 데이터가 1개 들어온다면 데이터의 순위가 하나씩 밀려 2page의 첫번째 row는 아까 보았던 1page의 마지막 row 데이터를 중복해서 조회하게 된다. 이것이 오프셋 기반(Offset-based) 페이지네이션의 가장 큰 단점이다.

 

또한 오프셋 기반의 페이지네이션은 page를 계산할 때마다 비효율적인 전체 Table Scan을 해야하기 때문에 offset이 작은 수라면 문제가 되지 않으나 데이터의 수가 많을 경우 효율이 많이 떨어진다. 

 

커서 기반 페이지네이션의 경우, 마지막으로 가져온 데이터를 기준으로 다음의 n개의 데이터를 가져오는데 이렇게 되면 중복되는 데이터를 읽을 일이 없다. 예를 들어 1~10의 1page에서 다음 데이터를 요청할 때, 이 다음 10개의 데이터까지 이동(skip)해서 20~11의 2page를 요청하는 것이 아니라, 마지막으로 읽었던 10번 데이터를 기준으로 10개를 요청하는 것이다. 이렇게 하면 새로운 데이터가 들어와도 중복을 피할 수 있다. (물론 새로 들어온 데이터는 refetch 하기 전까지는 확인할 수 없겠지만...)

 

 

Apollo에서 지원하는 Pagination

 

Pagination overview

A guide to using the Apollo GraphQL Client with React

www.apollographql.com

이전의 RestAPI에서는 페이지네이션 처리를 위해서는 일일이 로직을 짜는 고생을 했었지만 다행스럽게도 Apollo 라이브러리에서는 이러한 Pagination을 도와주는 기능을 하고 있다. Docs에서 읽은 사용 방법은 아래와 같다.

 

여기에서는 Cursor-based Pagination만 설명하도록 하겠다. 설명을 위해서 가장 많이 쓰이는 FlatList 컴포넌트를 이용한 무한 스크롤 방식의 pagination을 구현해 보겠다.

 

const COMMENTS_QUERY = gql`
  query Comments($cursor: String) {
    comments(first: 10, after: $cursor) {
      edges {
        node {
          author
          text
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
`;

 

댓글(Comments)의 갯수를 10개씩 끊어서 가져오는 Query이다. 파라미터로 받는 first에는 가져오는 갯수, cursor에는 이전의 마지막 커서(endCursor)를 넣으면 계속해서 다음 page를 가져올 수 있다. GraphQL 서버에 요청하는 Query에서 pageInfo 라는 필드 내에서 마지막 데이터의 Cursor 주소인 endCursor과 다음 페이지의 존재 여부를 파악하는 hasNextPage 필드를 확인할 수 있다.

 

다음으로는 화면을 구현해보았다. 

 

export const CommentScreen = () => {
    const { loading, data, error, refetch, fetchMore } 
    = useQuery<{ comments: CommentList }, QueryCommentsArgs>(COMMENTS_QUERY, { variables: { first: 10 } })
    const [idleState, setIdleState] = useState<boolean>(false);
    return (
            <FlatList
            		style={{flex:1}}
                    showsVerticalScrollIndicator={false}
                    onRefresh={refetch}
                    refreshing={loading}
                    data={data?.faqs.edges}
                    renderItem={({ item, index }) => (
                        <RenderListTile item={item} />
                    )}
                    onEndReached={() => {
                        if (!idleState && !loading && data && data.comments.pageInfo.hasNextPage) {
                            setIdleState(true);
                            console.log('refetchMore...');
                            fetchMore({ variables: { after: data.comments.pageInfo.endCursor } }).then((data) => {
                                setIdleState(false);
                            }).catch(error => {
                                console.log('Fatch Error', error);
                                setIdleState(false);
                            })
                        }
                    }}
                    onEndReachedThreshold={0.5}
                    keyExtractor={(item, index) => (`${item.node.text}`)}
                />
    );
}

 

useQuery를 사용해 해당 쿼리를 서버의 요청하여 각각의 3가지 상태 (요청중: loading, 가져온 데이터: data, 오류: error)를 비구조화 할당으로 작성하였다. 이때, refetch는 새로고침이고, fetchMore은 다음의 데이터를 요청하는 것이다. flatList에서 onRefresh를 사용하여 refetch를 연결하면 터치를 하여 밑으로 내리면 Indicator가 돌아가며 새로고침하는 것을 확인할 수 있다.

 

 

 

onEndReached는 flatlist가 하단 바닥의 도달할 경우 동작을 하게 되는데, 이때 onEndReached가 하단에서 어느 정도까지 도달했을 때 동작하는 지 정하는 것이 바로 onEndReachedThreshold이다. 위에서는 0.5로 되어 있으므로 현재의 화면에서 절반정도에 도달 했을 때 실행된다.

 

 

 fetchMore({
 variables:{ after: data.comments.pageInfo.endCursor
 } })
 .then((data) => {setIdleState(false);}));

 

 

 

 

리엑트 훅(React Hooks)을 사용하여 idleState라는 boolean 타입의 변수를 생성하였다. 이 변수를 사용하여 flatList의 아래에 도착했을 때 fetchMore 함수가 두 번 이상 실행되는 것을 막기 위함이다. fetchMore을 통해 다음의 데이터를 가져오기 위해 파라미터로 after필드에 현재까지 읽은 데이터의 마지막 커서인 endCursor를 넣어준다.

 

 

 

이제 가장 중요한 부분인데 바로 Apollo Client에서 지원하는 relayStylePagination 함수를 사용하여 Cache에 있는 데이터의 커서 기반 페이지네이션을 처리하는 부분이다.

 

 

import { relayStylePagination } from "@apollo/client/utilities";

const cache = new InMemoryCache({
  typePolicies: {
    Query: {
      fields: {
        comments: relayStylePagination(),
      },
    },
  },
});

 

 

 

InMemoryCache에서 페이지네이션 처리를 하려는 데이터 필드명과 relayStylePagination() 만 작성하면 Cursor-based의 페이지네이션이 자동으로 이루어진다! 실로 간편하지 않을 수 없다. 추가적인 파라미터에 따라 pagination 처리를 각기 하려면 relayStylePagination()의 파라미터로 relayStylePagination(["filter", "sort"]) 처럼 배열을 삽입하면 원하는 pagination 처리를 할 수 있다.

 

 

 Flutter나 React-Native에서 빌드를 하다가 Execution failed for task ':app:mergeDexDebug' 에러를 종종 볼 수 있다. minSdkVersion이 20 이하로 설정되어 있으면 multidex 지원 라이브러리를 사용해야 한다.

 

보다 자세한 것은

64K가 넘는 메서드의 앱에 관해 멀티덱스 사용 설정  |  Android 개발자  |  Android Developers

 

64K가 넘는 메서드의 앱에 관해 멀티덱스 사용 설정  |  Android 개발자  |  Android Developers

앱이 여러 DEX 파일을 빌드하고 읽을 수 있도록 하는 multidex라는 앱 구성의 사용설정 방법에 관해 알아보세요.

developer.android.com

 

'프로그래밍 > Flutter' 카테고리의 다른 글

Flutter 안드로이드에서 scrollview 반짝임(glow) 제거  (0) 2020.11.04
Flutter SNS Login Package  (0) 2020.08.24
Shared Preferences  (1) 2020.04.28
Cupertino ActionSheet  (0) 2020.04.05
image shake animation  (0) 2020.04.04

전희성 교수님의 요청으로 작성된 포스트입니다. 많은 학생들에게 도움이 되었으면 합니다.

Unity를 아이폰용(ios)으로 빌드하는 방법을 알려드리겠습니다.

 

우선 Unity에서 이러한 작업을 수행하기 위해선 다음과 같은 조건이 필요합니다.

테스트 디바이스(아이폰)의 경우 ipone 5 이상이여야 하며, iOS의 버전은 8.0 이상이여야 합니다.

당연한 이야기지만 iphone 개발의 경우 Macbook이 무조건적으로 필요합니다...

mac이 없이 해킨토시로 어떻게든 하시려고 하는 분이 계신데 별로 추천 드리지 않습니다.

그냥 안드로이드 공기계를 구해서 안드로이드로 작업하시는 것이 정신건강에 좋을 것 같네요. (진심입니다)

 

그럼 설명을 진행하겠습니다.

 

Unity의 버전은 수업에서 사용하는 버전인 Unity 2019.1.15f1 을 사용합니다.

다만 안드로이드가 아닌 ios에서 작동되야 하므로 아래와 같이 체크를 해줍니다.

 

다음으로 프로젝트를 생성합니다. 간단하게 프로젝트명을 Cardboard로 지어주었습니다.

 

프로젝트를 열면 아래와 같은 화면이 표시 됩니다.

 

다음으로 GoogleVRForUnity파일을 받아와야 합니다.

github.com/googlevr/gvr-unity-sdk/releases

 

Releases · googlevr/gvr-unity-sdk

Google VR SDK for Unity. Contribute to googlevr/gvr-unity-sdk development by creating an account on GitHub.

github.com

위 링크에 접속하시면 최신 릴리즈 버전(2020년 11월 기준: 1.200.1)이 있습니다.

unitypackage파일을 다운로드 받아주세요.

 

 

다음으로 받은 unitypackage파일을 임포트 해주어야 합니다.

아래와 같이 Assets - Import Package - Custom Package 를 눌러 줍니다.

 

 

아까 다운로드 받아두었던 파일을 선택해 Open 버튼을 클릭합니다.

아래와 같이 패키지 임포트 파일의 체크 리스트가 표시됩니다.

다른 것 건드릴 필요없이 그대로 import 버튼을 눌러줍니다.

 

하단에 프로젝트 내 폴더 뷰창을 보시면 Assets 폴더 내에 GoogleVR 폴더가 성공적으로 임포트 되있는 것을 확인할 수 있습니다.

 

다음으로 Assets -> GoogleVR -> Prefabs 폴더에 들어가 GvrEditorEmulator.prefab 파일을 선택한 뒤,

Scene에 드래그 앤 드롭 방식으로 추가시켜줍니다.

 

 

다음으로 360도 파노라마 뷰가 가능한 이미지 파일을 임포트 해보겠습니다.

강의에서 사용하는 이미지 파일을 그대로 사용해보겠습니다.

해당 이미지는 아래 링크에서 받으실 수 있습니다.

 

pixexid.com/image/8hw0clw-360-panorama-miami

 

360 panorama miami free images

thet Curated by ਲਃਲਃਲਃਲਲਃਲਃਲਃਲਃਲਲਲਃਲਃਲ ਲਃਲਃਲਃਲਲਃਲਃਲਃਲਃਲਲਲਃਲਃਲ

pixexid.com

우측 상단에 Download 버튼을 눌러 다운로드 받아주세요.

 

다음으로 Unity에서 Assets -> Import New Asset을 클릭합니다.

그 다음 받았던 이미지 파일을 임포트시켜 줍니다.

 

 

 

 

이미지 추가 후 아래와 같은 화면이 보여집니다.

아직까지는 딱히 어려운 것은 없네요

 

 

이미지 파일에 inspector에서 Texture Shape를 Cube로 Mapping 을 Latitude-Logitude Layout으로 변경해줍니다.

이후 아래와 같이 로딩이 진행됩니다.

 

 

로딩이 끝나면 평면이었던 이미지 파일이 구형 모양이 됩니다.

 

 

 

다음으로 Assets -> Create -> Material 을 클릭해 추가시켜 줍니다.

 

 

추가한 Material의 이름을 Sky로 변경해 줍니다.

 

해당 Material의 Shader를 Skybox/Cubemap으로 설정해줍니다.

 

또한, Cubemap(HDR)에 있는 select를 눌러 아까 생성해두었던 구 모양의 파라노마 사진을 선택해줍니다.

 

위 작업이 끝났다면 아래와 같이 Sky meterial에 이미지가 적용되었음을 확인 할 수 있습니다.

 

 

위 Sky Meterial을 드래그 앤 드롭 방식으로 Scene 위에 올려줍니다.

 

제대로 작업하셨다면 아래와 같은 화면을 볼 수 있습니다.

 


위의 내용까지는 프로젝트를 만드는 과정이었습니다.

이제부터는 ios 위에 올려야 하는 작업입니다.

 

우선 Unity에서 File -> Build Settings를 클릭합니다.

 

 

다음으로 Platform에서 iOS를 선택한 뒤 Switch Platform을 눌러 플랫폼을 변경해줍니다.

플랫폼이 정상적으로 변경되었다면 Player Settings를 클릭합니다.

이후 Other Settings에서 Bundle Identifier을 변경해줍니다. 저의 경우 com.sidongmen.cardboard로 하였습니다.

Scripting Runtime Version은 .Net 4.x Equivalent 로 설정해줍니다.

 

다음으로 XR Settings 탭에서 Virtual Reality Supported 를 체크해줍니다.

우리는 Cardboard에서 사용할 것이므로 Cardboard를 추가해줍니다.

이 작업을 건너 뛸 경우 xcode에서 빌드 시 에러가 발생하니 주의하세요.

 

다음으로 아까 열었던 Build Settings에서 Build 버튼을 눌러줍니다. 폴더명을 build로 해주고 Save를 눌러줍니다.

 

다음으로 xcode를 열어줍니다.

xcode가 없으시면 설치해주세요. 따로 설치방법은 올리지 않겠습니다..ㅎㅎ

xcode 아이콘

xcode를 실행한 뒤 아까 생성했던 build 폴더에 들어가 .xcworkspace 라는 확장자를 가진 프로젝트 파일을 열어줍니다.

xcodeproj가 아니라 xcworkspace입니다!! 헷갈리면 빌드가 안되니 주의하세요!

정상적으로 프로젝트를 열었다면 아래와 같은 화면을 보실 수 있습니다.

이제 USB와 아이폰을 연결해줍니다.

 

아래와 같은 알림창이 뜨면 신뢰를 눌러줍니다.

제 iphone 이름은 Miley입니다.

xcode에서 디바이스가 인식되었음을 알 수 있습니다.

 

이대로 상단에 있는 플래이 버튼을 눌러 빌드를 진행하면 Signing 오류가 발생합니다.

프로젝트를 눌러 Signing & Capabilities 탭에 들어갑니다.

 

Automatically manage signing을 체크하여 계정을 설정해줍니다.

 

개발자 계정의 경우 매년 129,000원 정도를 지불해야 합니다.

굳이 앱스토어에 올릴 게 아니고 내 디바이스에서 테스트를 할 것이니 가입비를 지불하지 않고

개인 계정을 사용하여 테스트 할 수 있습니다.

 

저는 개발자 계정을 사용하지 않고 개인 계정을 사용하였습니다.

 

개인 계정을 추가하는 방법은 아래링크를 참고해주세요.

www.egovframe.go.kr/wiki/doku.php?id=egovframework:hyb3.5:hrte:runiphone

 

egovframework:hyb3.5:hrte:runiphone [eGovFrame]

아이폰의 경우 iOS7이상에서는 애플 개발자계정없이도 애플계정으로 아이폰에 빌드할수 있도록 변경되었다. iOS 7.0 이상 설치된 아이폰 Xcode에 아이폰의 애플계정이 등록되어야 한다. 보안인증이

www.egovframe.go.kr

 

개인 계정을 아래와 같이 설정해줍니다.

 

이제 다시 플레이 아이콘 버튼을 눌러 빌드를 진행해줍니다.

빌드 시 Could not launch 권한 에러가 발생할 경우

아이폰에서 설정 -> 일반 -> 기기 관리를 눌러 해당 앱의 권한을 허용해줍니다.

 

앱이 잘 설치되었음을 알수 있습니다.

 

 

 

앱을 실행해보았습니다. 잘 작동하네요 ㅎㅎ

 

 

 

 

교수님께서 나누어 주셨던 Cardboard를 사용해보았습니다.

 

잘 작동하는 것을 확인했습니다.

 

네.. 이렇게 xcode를 통해 아이폰용 Unity 를 빌드하는 법을 알아보았습니다.

설명이 미흡한 부분 죄송합니다 ㅠㅠ

쭉 빌드를 해보니 아래에 해당하시는 분이면 안드로이드를 사용하시는게 좋을 듯합니다.

 

1. 맥북이 없다 (<- 이건 대체가 불가능)

2. 아이폰이 너무 구형이다.(저의 경우 iphone6)

3. xcode를 다뤄본 경험이 많지 않음.

 

 

네 뭐 그렇습니다..

긴글 읽어주셔서 감사합니다.

 

 

github.com/sidongmen

 

sidongmen - Overview

Be creative. sidongmen has 4 repositories available. Follow their code on GitHub.

github.com

 

 

+ Recent posts